Sachverhalt:
A.
Der 1962 geborene A._ meldete sich im November 2017 bei der Invalidenversicherung zum Leistungsbezug an. Nach Abklärungen und Durchführung des Vorbescheidverfahrens verneinte die IV-Stelle Solothurn mit Verfügung vom 28. Januar 2020 einen Leistungsanspruch.
B.
Die dagegen erhobene Beschwerde des A._ hiess das Versicherungsgericht des Kantons Solothurn mit Entscheid vom 20. August 2020teilweise gut. Es änderte die Verfügung vom 28. Januar 2020 in dem Sinne ab, als es die IV-Stelle verpflichtete, dem Versicherten eine halbe Invalidenrente vom 1. Mai bis zum 31. Dezember 2018 auszurichten. Es wies die Sache an die IV-Stelle zurück, damit sie im Sinne der Erwägungen verfahre. Im Übrigen wies es die Beschwerde ab.
C.
A._ lässt mit Beschwerde in öffentlich-rechtlichen Angelegenheiten beantragen, unter Aufhebung des Entscheids vom 20. August 2020 sei ihm ab 1. Mai 2018 und über den 31. Dezember 2018 hinaus - unter Gewährung der beruflichen Eingliederungsmassnahmen - eine unbefristete Invalidenrente bei einem Invaliditätsgrad von mindestens 50 % zuzüglich Verzugszins zu 5 % ab wann rechtens zuzusprechen. Eventualiter sei die Sache zu weiteren Erhebungen, namentlich zur Frage der Selbsteingliederungsfähigkeit sowie des Anspruchs auf berufliche Massnahmen, an das kantonale Gericht resp. an die IV-Stelle zurückzuweisen.

Erwägungen:
1.
1.1. Das kantonale Gericht hat in Bezug auf den Rentenanspruch die Sache unter Aufhebung der angefochtenen Verfügung zur Berechnung der Rentenhöhe und zum Entscheid über den Anspruch auf Verzugszins an die IV-Stelle zurückgewiesen. Formell handelt es sich demnach (teilweise) um einen Rückweisungsentscheid. Dient die Rückweisung - wie hier - nur noch der Umsetzung des oberinstanzlich Angeordneten und verbleibt der unteren Instanz somit kein Entscheidungsspielraum mehr, handelt es sich materiell nicht, wie bei Rückweisungsentscheiden sonst grundsätzlich der Fall, um einen Zwischenentscheid, der bloss unter den Voraussetzungen der Art. 92 oder 93 BGG beim Bundesgericht anfechtbar wäre, sondern um einen Endentscheid im Sinne von <ref-law> (<ref-ruling> E. 1.1 S. 143; Urteile 9C_358/2020 vom 19. Oktober 2020 E. 1; 9C_18/2020 vom 19. Mai 2020 E. 1). Auf die Beschwerde - die sich nicht gegen die Rückweisung betreffend den Verzugszins richtet - ist daher einzutreten.
1.2. Mit der Beschwerde in öffentlich-rechtlichen Angelegenheiten kann eine Rechtsverletzung nach Art. 95 f. BGG gerügt werden. Das Bundesgericht wendet das Recht von Amtes wegen an (<ref-law>). Dennoch prüft es - offensichtliche Fehler vorbehalten - nur die in seinem Verfahren gerügten Rechtsmängel (Art. 42 Abs. 1 f. BGG; <ref-ruling> E. 2.2.1 S. 389). Es legt seinem Urteil den Sachverhalt zugrunde, den die Vorinstanz festgestellt hat (<ref-law>). Es kann ihre Sachverhaltsfeststellung von Amtes wegen berichtigen oder ergänzen, wenn sie offensichtlich unrichtig ist oder auf einer Rechtsverletzung im Sinne von <ref-law> beruht und wenn die Behebung des Mangels für den Verfahrensausgang entscheidend sein kann (Art. 97 Abs. 1, Art. 105 Abs. 2 BGG).
2.
Die Vorinstanz hat dem interdisziplinären Gutachten des Swiss Medical Assessement- and Business-Centers (SMAB) vom 30. Oktober 2018 Beweiskraft beigemessen und gestützt darauf festgestellt, der Versicherte sei für leidensangepasste Tätigkeiten vom 4. August 2016 bis zum 3. September 2018 zu 50 % und seither uneingeschränkt arbeitsfähig gewesen. Sodann hat sie die Verwertbarkeit der Restarbeitsfähigkeit auf dem Weg der Selbsteingliederung bejaht. Auf der Grundlage von Tabellenlöhnen der Schweizerischen Lohnstrukturerhebung (LSE) hat das kantonale Gericht einen Invaliditätsgrad von 55 % für die erste Phase und von höchstens 10 % für die zweite Phase ermittelt. Folglich hat es - unter Berücksichtigung der Karenzfrist von <ref-law> und der Dreimonatsfrist von <ref-law> (SR 831.201) - dem Versicherten eine halbe Invalidenrente vom 1. Mai bis zum 31. Dezember 2018 zugesprochen (vgl. <ref-law>), aber einen Anspruch auf berufliche Massnahmen (insbesondere Berufsberatung [<ref-law>], Umschulung [<ref-law>], Arbeitsvermittlung [<ref-law>]) verneint.
3.
3.1. Im SMAB-Gutachten wurde für angepasste Tätigkeiten (körperlich leicht, in lufthygienisch optimaler Umgebung, stressarm und ohne besondere Anforderung an Konzentration, Reaktion und Flexibilität) eine psychisch bedingte Arbeitsunfähigkeit von 50 % vom 4. August 2016 bis zum 3. September 2018 und eine pneumologisch/onkologisch begründete Einschränkung von 100 % für August und September 2017 attestiert. Die Experten legten dar, dass nach der Lungenoperation vom 7. August 2017 zwar (gleichentags) eine Revisionsoperation und (vom 18. bis zum 26. August 2017) eine stationäre Rehabilitationsbehandlung erfolgt waren und eine (zwischenzeitlich remittierte) Heiserkeit infolge "Stimmbänderlähmung" persistiert hatte, aber keine weitere onkologische Behandlung notwendig war. Damit begründeten sie nachvollziehbar und im Rahmen ihres Ermessensspielraums (vgl. dazu <ref-ruling> E. 3.4.2.3 S. 253), weshalb sie eine "angemessene Erholungsphase" von rund zwei Monaten berücksichtigten. Sodann hatte auch der behandelnde Pneumologe in seinem Bericht vom 9. Mai 2018 für angepasste Tätigkeiten eine uneingeschränkte Arbeitsfähigkeit attestiert, und in seinem Bericht vom 2. April 2019 hielt er im Vergleich zur Voruntersuchung vom 12. März 2018 trotz Verminderung der CO-Diffusionskapazität von 57 auf 51 % einen "günstigen zwischenzeitlichen Verlauf" und eine "stabile Situation" fest. Somit genügt das SMAB-Gutachten den Anforderungen an die Beweiskraft (vgl. <ref-ruling> E. 5.1 S. 232; <ref-ruling> E. 3a S. 352). Soweit die vorinstanzlichen Feststellungen betreffend die Arbeitsfähigkeit mit den Einschätzungen der SMAB-Experten übereinstimmen, bleiben sie für das Bundesgericht verbindlich (E. 1.2).
3.2. Der anspruchserhebliche Zugewinn an Leistungsfähigkeit zieht kaum zusätzlichen Eingliederungsbedarf nach sich, wenn bisher schon eine erhebliche Restarbeitsfähigkeit bestand (Urteil 9C_396/2019 vom 2. März 2020 E. 5.1 mit Hinweisen) resp. die langjährige Absenz vom Arbeitsmarkt auf invaliditätsfremde Gründe zurückzuführen ist (<ref-ruling> E. 5.1 S. 211). Zwar moniert der Beschwerdeführer in diesem Zusammenhang, er sei - entgegen der vorinstanzlichen Feststellung - nicht "stets" zumindest teilweise arbeitsfähig gewesen. Indessen ist gemäss <ref-law> eine vorübergehend verschlechterte Arbeitsfähigkeit für den Rentenanspruch nicht relevant, wenn sie, wie hier (vgl. E. 3.1), nicht mindestens drei Monate dauert. Hinzu kommt, dass der Versicherte bei der Begutachtung selber angab, schon "seit ca. 2014", mithin lange vor Eintritt der psychisch begründeten (teilweisen) Arbeitsunfähigkeit, nicht mehr (erwerbs-) tätig gewesen zu sein. In Übereinstimmung damit hat die Vorinstanz (verbindlich; E. 1.2) festgestellt, dass er seine "letzte Tätigkeit" nicht aus gesundheitlichen Gründen verloren habe. Die Vorinstanz hat somit kein Recht verletzt, wenn sie die mehrjährige vollständige Absenz vom Arbeitsmarkt nicht auf die Invalidität zurückgeführt und deshalb einen Eingliederungsbedarf verneint hat. Folglich war die Befristung der Rente bundesrechtskonform. Bei qualitativ und quantitativ voller Arbeitsfähigkeit in einer leidensangepassten Tätigkeit besteht insbesondere kein Anspruch auf Arbeitsvermittlung (<ref-law>; Urteil 9C_329/2020 vom 6. August 2020 E. 3.2.3).
3.3. Die Beschwerde ist offensichtlich unbegründet, weshalb sie im vereinfachten Verfahren nach <ref-law> mit summarischer Begründung und unter Hinweis auf den kantonalen Gerichtsentscheid erledigt wird.
4.
Dem Ausgang des Verfahrens entsprechend hat der Beschwerdeführer die Gerichtskosten zu tragen (<ref-law>).

Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird abgewiesen.
2.
Die Gerichtskosten von Fr. 800.- werden dem Beschwerdeführer auferlegt.
3.
Dieses Urteil wird den Parteien, dem Versicherungsgericht des Kantons Solothurn und dem Bundesamt für Sozialversicherungen schriftlich mitgeteilt.
Luzern, 10. Dezember 2020
Im Namen der II. sozialrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Parrino
Die Gerichtsschreiberin: Dormann