Объясните почему в одном случае предпросмотр работает корректно, в другом же нет?
Почему если выводить новости в инфинити ленте (в частности заголовки так)
<?php //echo get_the_title($single_post->ID); ?>
То превью в wp не отображает изменения без сохранения
Но если вывести вот таким способом
<?php echo get_the_title(); ?>
То все станет в нормальный вид
PS Аналогично и тут
<?php $content = apply_filters('the_content', $single_post->post_content, $single_post->ID); ?> <div class="page-content"> <?php echo $content; ?> // Не выдаст измениния <?php the_content(); ?> // Изменения будут видны без сохранения |
<?php $content = apply_filters('the_content', $single_post->post_content, $single_post->ID); ?> <div class="page-content"> <?php echo $content; ?> // Не выдаст измениния <?php the_content(); ?> // Изменения будут видны без сохранения
Дополнительно:
Ничего не понятно, что за предпросмотр, и в каком месте темы это работает, но что-то подсказывает что объект $single_post у вас undefined , и надо так
global $post; echo get_the_title($post->ID); |
global $post; echo get_the_title($post->ID);
- У Worpdress есть такая штука как предпросмотр записи , он не корректно работает
- Роман Страх, а есть предпросмотр в кастомайзере, а есть предпросмотр всякого в плагинах, указывать надо корректно исходные данные, но причину я скорее всего указал.
-
<?php require_once(COMPONENTS_PATH . "icons/camera-icon.php"); require_once(COMPONENTS_PATH . "icons/video-content-icon.php"); require_once(COMPONENTS_PATH . 'line-news-list-item.php'); require_once(COMPONENTS_PATH . 'content-exist-markers.php'); function render_news_whole_post($id, $cat = NULL) { $single_post = get_post($id); gt_set_post_view($id); $author_id = $single_post->post_author; $taxonomies = get_my_taxonomies($id); if (!empty($taxonomies)) { $primary_category = get_post_primary_category($id, $taxonomies); if(!empty($primary_category['primary_category'])){ $primary_category = $primary_category['primary_category']; $cat_link = home_url(); $cat_link .= '/'; $cat_link .= $primary_category->taxonomy; $cat_link .= '/'; $cat_link .= $primary_category->slug; } } ?> <div class="post" data-url="<?php echo get_permalink($id)?>"> <div class="post-header"> <div class="content-exists"> <div class="content"> <?php $exist_markers = render_content_exist_markers($id); ?> <?php if ($exist_markers): ?> <?php echo $exist_markers; ?> <?php endif; ?> </div> <?php if (isset($cat_link)): ?> <div class="tags"> <a href="<?php echo $cat_link; ?>" class="tags__link"> <span> <?php echo $primary_category->name; ?> </span> </a> </div> <?php endif; ?> </div> <div class="title"> <span> <?php //echo get_the_title($single_post->ID); ?> <?php echo get_the_title(); ?> </span> </div> <div class="share"> <div class="date"> <span> <?php echo date("H:i", strtotime($single_post->post_date)); ?> </span> <span> <?php echo date("d.m.Y", strtotime($single_post->post_date)); ?> </span> </div> </div> <?php if (function_exists('nvvc_visitors_views_shortcode')) { echo nvvc_visitors_views_shortcode($id); } else { echo gt_in_post_view($id); } ?> </div> <?php //$content = apply_filters('the_content', $single_post->post_content, $single_post->ID); ?> <div class="page-content"> <?php// echo $content; ?> <?php the_content(); ?> <?php $is_advertising = carbon_get_post_meta($single_post->ID, 'news_is_advertising'); ?> <?php if ($is_advertising) : ?> <div class="adv__info"> <span class="adv_icon__box"><?php render_advertising_icon(); ?></span> <span class="adv_text__box"><?php echo carbon_get_post_meta($single_post->ID, 'news_text_advertising'); ?></span> </div> <?php endif; ?> </div> <div class="footer-content"> <div class="author-info"> <div class="author-image"> <?php echo get_avatar($author_id); ?> </div> <div class="author-details"> <span class="label">Автор материалов</span> <span class="name"><?php echo the_author_meta('display_name', $author_id); ?></span> <a href="<?php echo get_author_posts_url($author_id); ?>" class="other-posts">Все новости автора</a> </div> </div> <?php echo share_links($id); ?> </div> </div> <?php }
<?php require_once(COMPONENTS_PATH . "icons/camera-icon.php"); require_once(COMPONENTS_PATH . "icons/video-content-icon.php"); require_once(COMPONENTS_PATH . 'line-news-list-item.php'); require_once(COMPONENTS_PATH . 'content-exist-markers.php'); function render_news_whole_post($id, $cat = NULL) { $single_post = get_post($id); gt_set_post_view($id); $author_id = $single_post->post_author; $taxonomies = get_my_taxonomies($id); if (!empty($taxonomies)) { $primary_category = get_post_primary_category($id, $taxonomies); if(!empty($primary_category['primary_category'])){ $primary_category = $primary_category['primary_category']; $cat_link = home_url(); $cat_link .= '/'; $cat_link .= $primary_category->taxonomy; $cat_link .= '/'; $cat_link .= $primary_category->slug; } } ?> <div class="post" data-url="<?php echo get_permalink($id)?>"> <div class="post-header"> <div class="content-exists"> <div class="content"> <?php $exist_markers = render_content_exist_markers($id); ?> <?php if ($exist_markers): ?> <?php echo $exist_markers; ?> <?php endif; ?> </div> <?php if (isset($cat_link)): ?> <div class="tags"> <a href="<?php echo $cat_link; ?>" class="tags__link"> <span> <?php echo $primary_category->name; ?> </span> </a> </div> <?php endif; ?> </div> <div class="title"> <span> <?php //echo get_the_title($single_post->ID); ?> <?php echo get_the_title(); ?> </span> </div> <div class="share"> <div class="date"> <span> <?php echo date("H:i", strtotime($single_post->post_date)); ?> </span> <span> <?php echo date("d.m.Y", strtotime($single_post->post_date)); ?> </span> </div> </div> <?php if (function_exists('nvvc_visitors_views_shortcode')) { echo nvvc_visitors_views_shortcode($id); } else { echo gt_in_post_view($id); } ?> </div> <?php //$content = apply_filters('the_content', $single_post->post_content, $single_post->ID); ?> <div class="page-content"> <?php// echo $content; ?> <?php the_content(); ?> <?php $is_advertising = carbon_get_post_meta($single_post->ID, 'news_is_advertising'); ?> <?php if ($is_advertising) : ?> <div class="adv__info"> <span class="adv_icon__box"><?php render_advertising_icon(); ?></span> <span class="adv_text__box"><?php echo carbon_get_post_meta($single_post->ID, 'news_text_advertising'); ?></span> </div> <?php endif; ?> </div> <div class="footer-content"> <div class="author-info"> <div class="author-image"> <?php echo get_avatar($author_id); ?> </div> <div class="author-details"> <span class="label">Автор материалов</span> <span class="name"><?php echo the_author_meta('display_name', $author_id); ?></span> <a href="<?php echo get_author_posts_url($author_id); ?>" class="other-posts">Все новости автора</a> </div> </div> <?php echo share_links($id); ?> </div> </div> <?php }
- Во всем остальном все в штатном режиме
- Причина немного другая get_post - вызывает текущую запись, ту которая есть сейчас, и любые изменения которые вы пытаетесь просмотреть из объекта $single_post вы не видите, работает только то, что вызывается через $post глобальный.
скорее всего надо сделать так:
function render_news_whole_post( $cat = NULL) { global $post; gt_set_post_view($post->ID); $author_id = $post->post_author; // бла-бла-бла }
function render_news_whole_post( $cat = NULL) { global $post; gt_set_post_view($post->ID); $author_id = $post->post_author; // бла-бла-бла }
- WP Panda, спасибо, но заголовок все также не изменен пока я не сохраню его
- Роман Страх, а функция внутри цикла?
- WP Panda, да
<?php foreach ($meri_posts as $post) : ?> <?php render_news_whole_post($post->ID); ?> // и далее код исполняется который выше <?php endforeach; ?>
<?php foreach ($meri_posts as $post) : ?> <?php render_news_whole_post($post->ID); ?> // и далее код исполняется который выше <?php endforeach; ?>
- Роман Страх,
это не тот цикл, я имел виду основной, подразумевается что это у вас шаблон single или его аналоги
Тут не понятно откуда берутся $meri_posts
если из get_posts то надо сделать setup_postdata
- WP Panda, в точку
<?php $meri_args = array( 'post_status' => 'publish', 'posts_per_page' => 2, 'post_type' => 'news', 'post__not_in' => array($post->ID), ); $meri_posts = get_posts($meri_args); ?>
<?php $meri_args = array( 'post_status' => 'publish', 'posts_per_page' => 2, 'post_type' => 'news', 'post__not_in' => array($post->ID), ); $meri_posts = get_posts($meri_args); ?>
- Роман Страх, ну я выше ответил
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Предпросмотр WordPress работает через ревизию/preview-версию текущей записи. Когда Вы используете
the_title()иthe_content()внутри главного цикла, WordPress сам подставляет данные предпросмотра. Когда Вы вручную берёте другой объект$single_postи читаете$single_post->post_content, Вы обходите эту механику и получаете сохранённую версию из базы.Поэтому различие нормальное:
the_content()— учитывает глобальный пост и фильтры предпросмотра;get_the_title()без ID — берёт текущий пост в цикле;$single_post->post_content— просто поле объекта, без preview-магии;get_the_title($single_post->ID)— может не учитывать несохранённые изменения, если это не preview-объект.Если Вы строите бесконечную ленту и хотите корректный preview, используйте стандартный цикл там, где это возможно:
while ($query->have_posts()) { $query->the_post(); the_title('<h2>', '</h2>'); the_content(); } wp_reset_postdata();
Если нужно работать с конкретным объектом, пропускайте контент через фильтры, но понимайте: несохранённые изменения WordPress не обязан подставлять в произвольный объект. Для предпросмотра важны глобальный
$post, основной loop и preview hooks.Вывод: для шаблонов, где важен предпросмотр редактора, не читайте напрямую
post_content. Используйте loop-функции WordPress или специально подготавливайте preview-данные.