У меня есть собственное мета-поле, которое я бы хотел вставить в 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
,
Вы можете использовать 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()
Вы можете сделать что-то вроде этого —
и добавьте условия, которые вы хотите —
Вам может понадобиться доступ к 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