Wordpress - YouTube-url als output shortcode

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • eighty-four
  • Registratie: Juni 2012
  • Nu online
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


Acties:
  • 0 Henk 'm!

  • 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 ]


Acties:
  • 0 Henk 'm!

  • eighty-four
  • Registratie: Juni 2012
  • Nu online
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.

Acties:
  • 0 Henk 'm!

  • 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 ]


Acties:
  • 0 Henk 'm!

  • eighty-four
  • Registratie: Juni 2012
  • Nu online
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>';

Acties:
  • 0 Henk 'm!

  • 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 ]


Acties:
  • 0 Henk 'm!

  • 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.

Acties:
  • 0 Henk 'm!

  • eighty-four
  • Registratie: Juni 2012
  • Nu online
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 ]


Acties:
  • 0 Henk 'm!

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

rens-br

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