Показать все удаленные темы bbpress WordPress?

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

Подскажите как на странице вывести все удаленные темы bbpress WordPress то есть все темы из корзины.

Их очень много и нужно повторно модерировать пользователям или модераторам.

Дополнительно:

Такие темы после попадание в корзину меняют урл становятся примерно так https://site.ru/?post_type=topic&p=96029&view=all и просматривать их могут только модераторы bbpress вот как вывести все эти темы (удаленные) на страницу

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

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

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Темы bbPress — это записи типа topic. Когда они попадают в корзину, их статус становится trash. Вывести их можно отдельным WP_Query, но смотреть такие темы должны только пользователи с правами модерации, иначе вы случайно откроете удалённый контент публично.

Пример shortcode для страницы модератора:

add_shortcode('bbp_trashed_topics', function () {
    if (! current_user_can('moderate')) {
        return '<p>Недостаточно прав.</p>';
    }
 
    $query = new WP_Query([
        'post_type' => bbp_get_topic_post_type(),
        'post_status' => 'trash',
        'posts_per_page' => 50,
        'orderby' => 'modified',
        'order' => 'DESC',
    ]);
 
    if (! $query->have_posts()) {
        return '<p>Удалённых тем нет.</p>';
    }
 
    ob_start();
 
    echo '<ul class="trashed-bbp-topics">';
 
    while ($query->have_posts()) {
        $query->the_post();
 
        $edit_link = get_edit_post_link(get_the_ID());
 
        echo '<li>';
        echo '<a href="' . esc_url($edit_link) . '">' . esc_html(get_the_title()) . '</a>';
        echo ' <small>' . esc_html(get_the_modified_date()) . '</small>';
        echo '</li>';
    }
 
    echo '</ul>';
 
    wp_reset_postdata();
 
    return ob_get_clean();
});

add_shortcode('bbp_trashed_topics', function () { if (! current_user_can('moderate')) { return '<p>Недостаточно прав.</p>'; } $query = new WP_Query([ 'post_type' => bbp_get_topic_post_type(), 'post_status' => 'trash', 'posts_per_page' => 50, 'orderby' => 'modified', 'order' => 'DESC', ]); if (! $query->have_posts()) { return '<p>Удалённых тем нет.</p>'; } ob_start(); echo '<ul class="trashed-bbp-topics">'; while ($query->have_posts()) { $query->the_post(); $edit_link = get_edit_post_link(get_the_ID()); echo '<li>'; echo '<a href="' . esc_url($edit_link) . '">' . esc_html(get_the_title()) . '</a>'; echo ' <small>' . esc_html(get_the_modified_date()) . '</small>'; echo '</li>'; } echo '</ul>'; wp_reset_postdata(); return ob_get_clean(); });

После этого добавьте на закрытую страницу shortcode:

[bbp_trashed_topics]

[bbp_trashed_topics]

Если тем очень много, не выводите всё сразу: делайте пагинацию по 50-100 записей. Иначе страница модерации может подвесить сайт.

Для восстановления лучше вести модераторов в админку по get_edit_post_link(), а не делать публичную кнопку восстановления без nonce. Операции восстановления/удаления должны быть защищены правами и nonce-проверкой.

Если нужно именно просматривать удалённую тему на фронте, bbPress часто использует URL с ?post_type=topic&p=ID&view=all, но это поведение зависит от прав пользователя. Надёжнее для модерации использовать список с переходом в админку.

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

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

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

комментарий

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

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