ใช้ตัวกรอง [ฝัง] ในไฟล์เทมเพลต


9

WordPress ฝังวิดีโอ youtube โดยอัตโนมัติหากฉันใช้:

[embed] http://www.youtube.com/watch?v=Xog1T5dUxcw [/embed ]

นี่ยอดเยี่ยม แต่มันใช้งานไม่ได้ถ้าฉันใช้มันในไฟล์เทมเพลต ฉันมีฟิลด์ที่กำหนดเองซึ่งผู้ดูแลระบบสามารถใส่ URL ไปยังวิดีโอ YouTube ได้ ฉันต้องการรับวิดีโอในโพสต์เดียวโดยใช้รหัสต่อไปนี้:

<?php
  $custom = get_post_custom($post->ID);
  $url = $custom['_videoLink'][0];
?>
<div class="video">
  [embed]<?php $url; ?>[/embed]
</div>

ฉันจะแปลง Youtube URL เป็น URL แบบฝังโดยใช้ฟังก์ชัน WordPress [embed] มาตรฐานได้อย่างไร

คำตอบ:


14

ใช้wp_oembed_get( $url )แทน ตรวจสอบให้แน่ใจว่าคุณechoอยู่ในไฟล์แม่แบบของคุณ ดังนั้นสิ่งนี้:

<?php
// tot necessary to set this but good if $url is coming from a function
$url = 'https://www.youtube.com/watch?v=jofNR_WkoCE';

// echo the function in your template to render the video
echo wp_oembed_get( $url );
?>

วิธีแก้ปัญหาที่ง่ายและดีที่สุดสำหรับปัญหานี้ +1
แซม

10

โดยปกติคุณต้องใช้do_shortcodeในเทมเพลตเพื่อวางรหัสย่อนอกเนื้อหาอย่างไรก็ตามฉันมีปัญหากับรหัสย่อแบบฝังโดยเฉพาะและไม่สามารถใช้งานได้ ฉันพบโซลูชันนี้ใช้งานได้ แต่อาจมีวิธีการทำเช่นนี้กับ do_shortcode และฉันพลาดอะไรไป

<?php
$custom = get_post_custom($post->ID);
$url = $custom['_videoLink'][0];
if($url):
    $shortcode = '[embed]'.$url.'[/embed]';
    global $wp_embed;
    echo $wp_embed->run_shortcode($shortcode);
endif;
?>

คุณสามารถทำ echo do_shortcode ($ shortcode) ได้ด้วย
keatch

@keatch - คุณลองใช้รหัสย่อของ WP เป็นพิเศษembedหรือไม่ ดังที่ฉันได้กล่าวไปแล้วว่ารหัสเฉพาะจะไม่ทำงานสำหรับฉันในขณะที่รหัสย่ออื่น ๆ มักจะทำ ฉันไม่ได้ทำการสอบสวนมากว่าทำไม นี่ไม่ใช่รุ่น WP ล่าสุด
Milo

1
ฉันรู้ว่ามันเก่า แต่เพิ่งจะชี้ให้เห็นว่าฉันยังคงมีปัญหาเดียวกันตอนนี้ในปี 2013 ด้วยรหัสย่อแบบฝังไม่ทำงานในไฟล์เทมเพลต วิธีการแก้ปัญหาดังกล่าวใช้งานได้ดี
Eckstein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.