Как вывести содержимое поста wordpress внутри вкладки wp-recall?

Ссылка скопирована
1 ответ

Доброго дня!

На текущий момент на моём сайте 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 и по клику подменять содержимое вкладки на полную версию записи.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ирина WP Ответ

Во вкладке 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();
}

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 или скрытого контейнера.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно