WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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

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

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

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

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

// после
$stati[] = 'private';
// добавим
$stati[] = 'future';
0
kolshix
1 месяц назад 682
  • 2
    campusboy3860 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 месяц назад

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

    campusboy 1 месяц назад

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

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

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

    campusboy 1 месяц назад

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

    kolshix 1 месяц назад

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

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

    Kama 1 месяц назад

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

    kolshix 1 месяц назад

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

    Kama 1 месяц назад

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

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