@Ysery

Метабокс отображения всех комментариев поста на страницу «Редактировать комментарий» в WordPress не работает, почему?

Доброго времени суток. Штатно метабокс отображается на странице редактирования поста, а я его ещё хотел добавить на страницу "Редактирования комментария", т.е. чтобы отображались все комментарии, что относятся к посту, к которому относится редактируемый комментарий. Код функции позаимствовал отсюда. Но почему то не работает - не показывает комментарии, хотя они точно есть.

<?php
add_action( 'admin_menu', 'all_display_comments_add_meta_box' );

function all_display_comments_add_meta_box() {
    add_meta_box( 'commentsdiv', __( 'Comments' ), 'my_post_comment_meta_box', 'comment', 'normal', 'high' );
}

function my_post_comment_meta_box( $post ) {

    $total         = get_comments(
        array(
            'post_id' => $post->ID,
            'number'  => 1,
            'count'   => true,
        )
    );
    $wp_list_table = _get_list_table( 'WP_Post_Comments_List_Table' );
    $wp_list_table->display( true );

    if ( 1 > $total ) {
        echo '<p id="no-comments">' . __( 'No comments yet.' ) . '</p>';
    } else {
        $hidden = get_hidden_meta_boxes( get_current_screen() );
        if ( ! in_array( 'commentsdiv', $hidden, true ) ) {
            ?>
            <script type="text/javascript">jQuery(document).ready(function(){commentsBox.get(<?php echo $total; ?>, 10);});</script>
            <?php
        }

        ?>
        <p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.load(<?php echo $total; ?>);return false;"><?php _e( 'Show comments' ); ?></a> <span class="spinner"></span></p>
        <?php
    }

    wp_comment_trashnotice();
}

614ca57870ee2623238372.png
Как будет правильно?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
V_A_B
@V_A_B
¯\_(ツ)_/¯
Для начала - это только часть функционала. И не всегда функционал от одной страницы применим к другой. В любом случае, думаю, проще будет написать самому, чем исправить то, чего там быть не должно (особенно, если плохо в этом разбираешься).
Как будет правильно?

... не работает, почему?

Дело в том, что страница комментариев это не страница постов. На странице постов внутрь функции передается переменная function my_post_comment_meta_box( $post ) {, которая содержит данные поста. На странице комментариев туда прилетят данные комментария. А это совсем другое дело.
Минимизируйте код, чтоб легче было разобраться и далее наращивайте до нужного функционала, разбираясь по пути с функциями...

Т.е. если грубо, то должно быть примерно так:

spoiler


не забывайте о var_dump - очень полезная штука
function my_post_comment_meta_box( $comment ) {
    $total=get_comments(
        array(
            'post_id' => $comment->comment_post_ID,
        )
    );
		foreach($total as $mass){
			var_dump($mass);
			echo '<a href="'.get_site_url().'/wp-admin/comment.php?action=editcomment&c='.$mass->comment_ID.'">'.esc_html__('Редактировать','VAB').'</a>';
			echo'<br><br>Отступ м/у комментариями<br><br>';
		}
}


По сути остается эти данные переварить в нужную Вам разметку...
и додумать выборку
$total=get_comments(array('post_id'=>$comment->comment_post_ID,));


Более готовый и сложный вариант, думаю, никто Вам писать не будет. только, если плагины посоветовать, но это не ко мне ¯\_(ツ)_/¯ ...

614ccd957c665666254075.png

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы