Как вывести содержимое поста wordpress внутри вкладки wp-recall?
Доброго дня!
На текущий момент на моём сайте wordpress используется плагин wp-recall для создания личного кабинета.
Кроме того, у меня есть отдельный тип постов для партнёрских программ. Список данных постов выводится на отдельной странице affiliate-page.php, где содержится логика фильтра, а также сам вывод через WP_Query.
Разметка и логика полной версии поста расположена в файле single-affiliate_post.php
Итак, суть проблемы: мне необходимо вывести список постов и открывать полную версию поста внутри вкладки wp-recall. Содержимое вкладки определяется передаваемой функцией, которая должна возвращать некий контент. Я использовала
get_template_part('affiliate-page')
для вывода списка постов с фильтром, и всё отлично работает. Однако, теперь мне нужно выводить в той же вкладке полную версию поста по клику на миниатюру. В самих миниатюрах переход к полной версии осуществляется через the_permalink();
Я пробовала выводить через
get_the_content( null, false, $post_id );
Но, к сожалению, это ни к чему не привело.
Каким образом я могу выводить полную версию постов внутри вкладки? В какую сторону дальше копать?
Буду очень благодарна за ответ
Дополнительно:
Ответы:
Тут нужно получать данные через ajax и по клику подменять содержимое вкладки на полную версию записи.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Во вкладке WP-Recall содержимое обычно нужно возвращать строкой, а не просто выводить через
echoв произвольном месте. Если Вы внутри callback делаетеthe_content()без буфера или вне корректного цикла, вкладка может быть пустой, дублировать контент или ломать разметку.Безопасный подход — собрать HTML через output buffering и вернуть его:
function my_rcl_posts_tab_content($user_lk) { $user_id = isset($user_lk['user_id']) ? (int) $user_lk['user_id'] : get_current_user_id(); $q = new WP_Query([ 'post_type' => 'post', 'author' => $user_id, 'posts_per_page' => 10, 'post_status' => 'publish', ]); ob_start(); if ($q->have_posts()) { echo '<div class="rcl-user-posts">'; while ($q->have_posts()) { $q->the_post(); echo '<article>'; echo '<h3><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></h3>'; echo '<div>' . wp_kses_post(wp_trim_words(get_the_content(), 35)) . '</div>'; echo '</article>'; } echo '</div>'; } else { echo '<p>Публикаций пока нет.</p>'; } wp_reset_postdata(); return ob_get_clean(); }
Если нужно вывести конкретный пост внутри вкладки, используйте
get_post()иapply_filters('the_content', $post->post_content). Но обязательно проверьте права доступа, чтобы пользователь не мог получить чужой закрытый материал через параметр URL.Отдельная частая ошибка — забытый
wp_reset_postdata(). После своегоWP_Queryглобальный пост остаётся заменённым, и дальше на странице могут ломаться заголовки, ссылки или другие вкладки WP-Recall. Поэтому сброс после цикла обязателен.Если вкладка грузится AJAX-ом, убедитесь, что нужные стили и скрипты подключаются не только на обычной странице, но и в личном кабинете. Иногда контент есть, но выглядит пустым из-за CSS или скрытого контейнера.