Принуждение к верхушке должности

Каков наилучший способ заставить oembed (или shortcode) слишком вверху сообщения?

Я хотел бы включить встраивание youtube до фактического содержимого статьи, независимо от того, где была вставлена ​​ссылка. Есть идеи?

Solutions Collecting From Web of "Принуждение к верхушке должности"

вы можете создать персонализированную мета-запись, содержащую URL-адрес YouTube, а затем

$yt=get_post_meta($post->ID,'youtube_url',true); if( '' != $yt) echo $GLOBALS['wp_embed']->autoembed( $yt ); 

Обновлено:

Если я получаю правильно, то ваш контент содержит URL-адрес YouTube, где бы он ни находился, и вы хотите показать их сверху, независимо от того, где находится контент.

jut вставьте этот код в functions.php

 add_filter('the_content','ravs_youtube_atTop',1); function ravs_youtube_atTop($content){ /* get list of all youtubr urls */ preg_match_all('#https?://(www\.)?youtube.com/watch.*#', $content, $matches); /*replace all youtube url by empty string*/ $content = preg_replace('#https?://(www\.)?youtube.com/watch.*#','',$content); /* return actual content if not youtube url found */ if( empty($matches[0]) ) return $content; /*insert all youtube embed iframes at top of content*/ foreach( $matches[0] as $match){ $content = wp_oembed_get($match).$content; } return $content; } 

Часть вашего вопроса спросила о коротких кодах. Это относительно просто.

 function move_shortcode_to_top($content) { if (!is_singular()) return; $regex = get_shortcode_regex(); preg_match_all('/'.$regex.'/',$content,$matches); $move_these = array( 'testsc' ); if (!empty($matches[2])) { foreach ($matches[2] as $k => $v) { if (in_array($v,$move_these)) { $content = $matches[0][$k].str_replace($matches[0][$k],'',$content); } } } return $content; } add_action('the_content','move_shortcode_to_top',1); 

Просто $move_these список ( $move_these ) коротких кодов, которые вы хотите переместить.

Для oembeds вам нужно что-то другое:

 function move_oembed_to_top($content) { $pattern = '|^\s*(https?://[^\s"]+)\s*$|im'; preg_match_all($pattern,$content,$matches); if (!empty($matches[1])) { $content = preg_replace($pattern,'',$content); $content = implode("\n",$matches[1])."\n".$content; } return $content; } add_filter('the_content','move_oembed_to_top',1); 

Это будет двигаться так, как многие встраиваются, как он находит. Протестировано с YouTube.

Примечание. Это регулярное выражение – это то, что используется системой встраивания Core .