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

У меня есть собственное мета-поле, которое я бы хотел вставить в 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,

0

Решение

Вы можете использовать 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()

2

Другие решения

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

и добавьте условия, которые вы хотите —

Вам может понадобиться доступ к 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

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector