2015-11-14 3 views
0

ТЛ; дг: Я хочу, чтобы извлечь Embeded Youtube видео ссылки из сообщений в определенной категорииПолучение Embeded YouTube видео с WordPress отправлять

Я в настоящее время разрабатывает веб-сайт блог/статьи. Рассмотрим следующее: у меня есть индексная страница, в которой есть раздел для 2 избранных видео. Предположим, что у меня есть запрос и цикл, который извлекает 2 последних сообщения из категории. Сообщения в этой категории всегда начинаются с признаками видео Embeded с помощью начальной загрузки:

<div class="embed-responsive embed-responsive-16by9"> 
    <iframe class="embed-responsive-item" src="..."></iframe> 
</div> 
<!-- some text content follows --> 

В настоящее время я использую следующие функции для извлечения текста отрывков из содержания сообщения:

function get_excerpt_by_id($post_id){ 
$the_post = get_post($post_id); //Gets post ID 
$the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt 
$excerpt_length = 30; //Sets excerpt length by word count 
$the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images 
$the_excerpt = html_entity_decode($the_excerpt, ENT_QUOTES, 'UTF-8'); 
$words = explode(' ', $the_excerpt, $excerpt_length + 1); 

if(count($words) > $excerpt_length) : 
    array_pop($words); 
    array_push($words, '…'); 
    $the_excerpt = implode(' ', $words); 
endif; 
return $the_excerpt; 
} 

Функция принимает содержимое из сообщение и извлекает первые 30 слов, разделяя все теги и изображения html. Как я мог сделать наоборот? Чтобы каким-то образом восстановить встроенное видео YouTube и избавиться от остальных? У меня есть две идеи:

  1. Я мог бы, например, взять первые буквы X, найти конец вложения и избавиться от остальных.

  2. Я мог бы добавить специальный элемент в сообщение и взять его внутрь. Что-то вроде:

    <span class="vid">...</span> 
    
  3. я теоретически мог бы создавать сообщения только с видео себя и просто использовать the_content(), но я хотел бы избежать этого решения, как сайты, которые просто обмениваться видео без добавления значения пользователя из сайт иногда подвергается штрафу со стороны Google в поисковых рядах.

  4. Я мог бы непосредственно извлечь элемент src из встроенного div.

Какой был бы лучший подход или есть лучший способ сделать это? Если да, не могли бы вы указать мне в правильном направлении?

Благодарим за любые советы.

ответ

0

Использование ресурсов из первый ответ l как больше исследований я сделал эту функцию:

<?php 
     $args = array(
      'category_name' => 'featured-video', 
      'posts_per_page' => '2' 
     ); 
     query_posts($args);  
     if (have_posts()) : while (have_posts()) : the_post(); 

     $content = $post->post_content; 
     $doc = new DOMDocument(); 
     @$doc->loadHTML($content); 
     $iframes = $doc->getElementsByTagName('iframe'); 
     foreach ($iframes as $frame) { 
       echo '<div class="embed-responsive embed-responsive-16by9">   
         <iframe class="embed-responsive-item" src="'.$frame->getAttribute('src').'" frameborder="0" allowfullscreen></iframe> 
        </div><br>'; 
     } 

     endwhile; endif;  
     wp_reset_query(); 
     ?> 
1

Я мог бы дать вам готовый код, но постарайтесь сделать это самостоятельно, вам, вероятно, понадобится это в будущем.

Вы должны использовать DOM, и вы можете извлечь видео ID с регулярным выражением. Например:

https://www.youtube.com/watch?v=EuQLMXyGQOE 

идентификатор EuQLMXyGQOE

http://php.net/manual/en/book.dom.php

http://php.net/manual/en/function.preg-match.php

Edit: Если вы застряли, вот законченная код http://pastebin.com/FhV5yQTV

+0

Спасибо, я постараюсь выяснить это :) – PeterTheLobster

Смежные вопросы