Toon posts:

Wordpress - YouTube-url als output shortcode

Pagina: 1
Acties:

Vraag


  • eighty-four
  • Registratie: Juni 2012
  • Laatst online: 19-01 22:12
Ik heb een klein stukje PHP geschreven die als output een YouTube-url geeft ($youtube_url, in de vorm 'https://youtu.be/xxxxxxxxxxx'). Ik wil die url m.b.v. een shortcode in Wordpress gebruiken zodat het YouTube-filmpje ge-embed wordt (zoals dat ook gebeurt wanneer je dezelfde url in de text editor zou plakken).

Laatste regel van mijn PHP is:
code:
1
return $youtube_url;


Probleem is dat ik nu de YouTube-url als platte tekst op de pagina te zien krijg i.p.v. een ge-embed filmpje. Hoe zorg ik ervoor dat ik het filmpje te zien krijg?

NB: Als ik de output uitbreid en de link in een iframe zet werkt het wel, maar ik zou graag de flexibiliteit willen die je normaal ook hebt bij het gebruik van alleen een url (waarbij WP automatisch de rest regelt).

Alle reacties


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Je kan ervoor zorgen dat de variabele de complete code dus bevat waarmee het ook embedded wordt op de pagina (de HTML dus). Of je zorgt dat de functie hetgeen teruggeeft wat WordPress gebruikt om het als embed weer te geven. Kun je anders de gehele functie delen in plaats alleen van deze return? :) Dat geeft wat meer inzicht.

Het ligt er ook aan wanneer jouw plugin draait. Ik ben niet heel bekend met WordPress, maar volgens mij kan je wel aangeven wanneer jouw code uitgevoerd moet worden, als een soort pre- of post-proces achtig iets. Waarschijnlijk wordt jouw plugin nu als post process uitgevoerd, waardoor de URL niet naar de embed geparsted wordt. :) Wellicht dat de documentatie daar meer duidelijkheid in kan geven. De algemene documentatie is op https://developer.wordpress.org/ te vinden.

[Voor 96% gewijzigd door CH4OS op 06-02-2022 23:45]


  • eighty-four
  • Registratie: Juni 2012
  • Laatst online: 19-01 22:12
code:
1
2
3
4
5
6
7
add_shortcode('randomYT','random_youtube');
    function random_youtube() {
    $YTlinks = array("aaaaaaaaaaa", "bbbbbbbbbbb", "cccccccccccc"");
    $random_youtube_id = array_rand($YTlinks);
    $youtube_url = 'https://youtu.be/' . $YTlinks[$random_youtube_id];
    return $youtube_url;
    }


Het idee is dat er telkens een random YouTube-ID wordt gekozen (uit een vaste set ID's) die dan d.m.v. [randomYT] ergens op de site kan worden getoond.

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Check, dan dien je dus alleen maar te zorgen dat de juiste HTML-code teruggegeven wordt om de video te embedden. Zie ook https://www.wplounge.nl/eigen-shortcodes-wordpress/ ter inspiratie. Hetgeen je gemaakt hebt, zit namelijk na de processing.

Wat enkele simpele voorbeelden staan op https://www.w3schools.com/html/html_youtube.asp.

[Voor 29% gewijzigd door CH4OS op 06-02-2022 23:51]


  • eighty-four
  • Registratie: Juni 2012
  • Laatst online: 19-01 22:12
Ik zet de shortcode nu in een tekstveld in Wordpress. Als ik de kale url zelf in dat tekstveld zet, maakt WP er netjes een filmpje van (zonder html te hoeven in te voeren). Klopt het dat als exacte dezelfde url de output is van een shortcode Wordpress er iets anders mee doet (en je er dus wel zelf html bij moet geven)?

Met deze code werkt het inderdaad wel:
code:
1
return '<iframe width="640" height="400" src="https://www.youtube.com/embed/' .$YTlinks[$random_youtube_id] .'" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ook kwam ik nog dit artikel tegen, die volgens mij precies uitlegt wat je wilt bereiken;
https://webtalis.nl/embed-youtube-video-wordpress/


Dit is met gebruik van de editor van WordPress.

[Voor 16% gewijzigd door CH4OS op 06-02-2022 23:59]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

eighty-four schreef op zondag 6 februari 2022 @ 23:54:
Ik zet de shortcode nu in een tekstveld in Wordpress. Als ik de kale url zelf in dat tekstveld zet, maakt WP er netjes een filmpje van (zonder html te hoeven in te voeren). Klopt het dat als exacte dezelfde url de output is van een shortcode Wordpress er iets anders mee doet (en je er dus wel zelf html bij moet geven)?

Met deze code werkt het inderdaad wel:
code:
1
return '<iframe width="640" height="400" src="https://www.youtube.com/embed/' .$YTlinks[$random_youtube_id] .'" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>';
Durf ik zo 1 2 3 niet te zeggen, maar zou zeggen, kijk het (Nederlandstalige) artikel dat ik net link even of kijk even in de documentatie.

  • eighty-four
  • Registratie: Juni 2012
  • Laatst online: 19-01 22:12
Thanks! Het probleem zit bij mij niet in het embedden zelf (dat gaat inderdaad prima op je manieren die je aangeeft), maar aan het feit dat ik wil dat er telkens bij het herladen van de pagina een andere url staat.

Overigens is de oplossing met het iframe in de output van de shortcode ook prima werkbaar, maar ik vond juist de functie van WP waarbij je alleen een url nodig hebt wel charmant (en ik wil graag begrijpen waarom WP twee keer anders omgaat met hetzelfde stukje tekst).

[Voor 10% gewijzigd door eighty-four op 07-02-2022 00:13]


  • rens-br
  • Registratie: December 2009
  • Laatst online: 20:48

rens-br

Admin IN & Moderator Mobile
Dit heeft niet zoveel te zoeken in Netwerken, dus schopje van NT naar DEV.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee