Вставить значение настраиваемого поля перед содержимым

У меня есть настраиваемое метаполе, которое я хотел бы автоматически вставить в the_content, чтобы мой плагин AMP мог отображать значение настраиваемого поля так же, как и the_content.

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

<?php $video_value = get_post_meta( get_the_ID(), '_video', true ); ?>

<?php if ( ! empty( $video_value ) ) {?>
    <div class="video-container"><?php echo $video_value; ?></div>
<?php } else { ?>
    <?php the_post_thumbnail(); ?>
<?php } ?>

Но я бы хотел, чтобы $video_value автоматически вставлялось перед the_content.


person Ciaran Gaffey    schedule 16.01.2018    source источник


Ответы (2)


Для этого можно использовать фильтр the_content. Подробнее об этом можно прочитать на сайте разработчиков WordPress.

Но код может выглядеть примерно так:

function my_custom_content_filter($content){
  global $post;
  $video_value = get_post_meta($post->ID, '_video', true);
  if($video_value){
    return '<div class="video-container">' . $video_value . '</div>' . $content;
 }else{
   return get_the_post_thumbnail($post->ID) . $content;
 }
}
add_filter('the_content', 'my_custom_content_filter');

И вы можете добавить этот код в свой functions.php файл.

Примечание Этот фильтр работает только на the_content(), но не на get_the_content().

person zarex360    schedule 16.01.2018
comment
аааааааааааааааааааааааааааа за него! :-D Мой ответ был для него, чтобы он сам во всем разобрался -_- - person Stender; 16.01.2018
comment
хе-хе, ну, твой ответ немного лучше для образовательных целей: P - person zarex360; 16.01.2018
comment
Спасибо вам обоим! - person Ciaran Gaffey; 16.01.2018

Вы можете сделать что-то вроде этого -

и добавьте нужные условия -

Вам может понадобиться доступ к Global $post, чтобы получить мета-значение

function custom_weird_name_before_after($content) {
if(is_page() || is_single() || $yourOwnConditions == true)  {
    $beforecontent = 'This line will go before the content - populate with whatever.';
    $aftercontent = 'This will come after the content - makes sense right?';
    $fullcontent = $beforecontent . $content . $aftercontent;
} else {
    $fullcontent = $content;
}

return $fullcontent;
}
add_filter('the_content', 'custom_weird_name_before_after');

Вы можете добавить это в functions.php

person Stender    schedule 16.01.2018