Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую! eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

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

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

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

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

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

// после
$stati[] = 'private';
// добавим
$stati[] = 'future';
0
kolshix
5.2 года назад 798
  • 2
    campusboy 4993 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 );

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

    Kama 5.2 года назад

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

    campusboy 5.2 года назад

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

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

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

    campusboy 5.2 года назад

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

    kolshix 5.2 года назад

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

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

    Kama 5.2 года назад

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

    kolshix 5.2 года назад

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

    Kama 5.2 года назад

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

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