WordPress как на ладони

Отобразить метабокс комментарии для запланированных постов (Scheduled)

Создал несколько запланированных постов - добавил код от KAMA чтоб открыть возможность добавлять комментарии к запланированным постам в редакторе.

Теперь вопрос как заставить отображаться метабокс в редакторе если post status future

Ручной костыль:

WordPress/wp-admin/includes/meta-boxes.php

// после
$stati[] = 'private';
// добавим
$stati[] = 'future';
0
kolshix
1.3 года назад 728
  • 2
    campusboy4055 www.youtube.com/c/wpplus

    Почитал первый вопрос и этот, моё решение такое для всего:

    // Принудительно отображаем метабокс с комментариями для Записей (post)
    add_action( 'add_meta_boxes_post', function () {
    	add_meta_box(
    		'commentsdiv',
    		__( 'Comments' ),
    		'post_comment_meta_box',
    		null,
    		'normal',
    		'core',
    		[ '__back_compat_meta_box' => true ]
    	);
    } );
    
    // Вешаемся на тот же хук, что и наш метабокс при сохранении, только раньше
    add_action( 'wp_ajax_replyto-comment', function () {
    	$post = $raw_post = get_post( (int) $_POST['comment_post_ID'] );
    
    	// Подменяем данные в кеше (статус записи)
    	$post->post_status = 'publish';
    	wp_cache_set( $post->ID, $post, 'posts' );
    
    	// Возвращаем кеш обратно на wp_die(), так как он точно потом сработает
    	add_filter( 'wp_die_ajax_handler', function ( $function ) use ( $raw_post ) {
    		wp_cache_set( $raw_post->ID, $raw_post, 'posts' );
    
    		return $function;
    	} );
    
    }, 0 );

    Данный код позволяет отобразить метабокс и писать в нём комментарии для записи с любым статусом (черновик, запланированная и т.д.). Критикуйте smile

    Kama 1.3 года назад

    Тонко, хрупко даже наверное. Но если нужно именно для статуса draft, то пожалуй это единственный вариант.

    campusboy 1.3 года назад

    Если это хрупко, значит легко "сломать". Можно пример, как сломать?

    Комментировать
  • 2
    Kama8761

    Дополнил тот код, так должен отображаться метабокс комментов у запланированных записей.

    campusboy 1.3 года назад

    На данный момент этот код не решает проблему для черновика (не запланированная запись):

    kolshix 1.3 года назад

    Тестировал код, он рабочий - есть баг - выводит метабокс на момент создания записи - в этот момент метабокс полностью не рабочий.

    Нужна дополнительная проверка в коде на статус текущей записи.

    Kama 1.3 года назад

    Нужно чтобы он не показывался при создании или чтобы показывался и работал?

    kolshix 1.3 года назад

    В идеале показывался и работал, но наверно такое не возможно , так как пост создаётся и не имеет ещё полноценных полей. И из-за этого наверно ажакс комментария не может сработать , хотя я не знаю как там обстоят дела.

    Kama 1.3 года назад

    Возможно. campusboy предложил как раз такое решение, чтобы и для драфтов коммент можно было оставить.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация