Intereting Posts
Настройка страницы для размещения определенных типов сообщений Как перенаправить ссылку на новую ссылку? Как добавить пользовательские поля в пользовательский тип сообщения? Sanitaizing Select Optin для персонализированного типа сообщений Metabox в WP Использование заголовка сообщения в массиве Как использовать force_feed с fetch_feed Отображение даты и времени в пользовательском часовом поясе Масштабирование изображения с использованием проблемы с get_the_post_thumbnail в WordPress Можно ли добавить первую и последнюю ссылку на сообщения? нужна помощь, связанная с добавлением add_action в wp Как отключить плагин для мобильного телефона? media-library: как вставлять миниатюры с фиксированной шириной, независимо от ориентации пейзаж / портрет Крюк для обработки нового таксономического тега перед его созданием? Разрешая отдельным пользователям добавлять только сообщения, используя определенные пользовательские термины таксомии Как добавить пользовательский URL-адрес для страницы?

Есть ли способ переопределить «перерывы комментариев на страницы» и «закрыть комментарии для старых сообщений» на определенных должностях, но не на других?

В разделе «Настройки»> «Обсуждение» есть возможность «разрывать комментарии на страницах», что добавляет разбиение на страницы на комментарии и разбивает их на отдельные страницы.

Я хочу отключить это на всем моем сайте … НО, на одном конкретном посту, я хочу, чтобы это включилось, чтобы сообщение (и только эта почта) содержало разбитые на страницы комментарии.

Это можно сделать?

Полу-связанное наблюдение: Можно ли сделать такой же тип с опцией «автоматически закрыть комментарии на должности старше»? В этом случае, чтобы комментарии по всем сообщениям закрывались после X дней, кроме сообщений 149, 150 и 151?

Заранее благодарю за любую помощь.

Solutions Collecting From Web of "Есть ли способ переопределить «перерывы комментариев на страницы» и «закрыть комментарии для старых сообщений» на определенных должностях, но не на других?"

Фильтр option_{$option_name} может использоваться для изменения значения параметра «на лету». Замените {$option_name} на имя параметра, который нужно изменить.

Переопределить параметр разбивки на комментарии

Имя параметра для разбиения на страницы комментариев – page_comments , поэтому мы создадим фильтр с именем option_page_comments . В приведенном ниже примере мы проверяем, смотрим ли мы на одну из должностей в нашем массиве идентификаторов, чтобы принудительно установить разбивку на страницы, и если это так, мы применяем разбиение на страницы комментариев. В противном случае используется значение на экране « Панель мониторинга»> «Настройки»> «Обсуждение» .

 // Forces comment pagination for certain posts regardless // of settings within the Settings > Discussion page. add_filter( 'option_page_comments', 'wpse_modify_page_comments' ); function wpse_modify_page_comments( $page_comments ) { if ( is_admin() ) { return $page_comments; } // Array of post IDs where comment pagination is forced on. $force_comment_pagination = [ 149, 150, 151, ]; if ( in_array( get_the_ID(), $force_comment_pagination ) ) { $page_comments = true; } return $page_comments; } 

Отменить закрытие комментариев для старых сообщений

Чтобы ответить на вопрос о последующих действиях – да, мы можем принудительно включить комментарии для некоторых старых сообщений, даже если настройки на экране обсуждения настроены на закрытие комментариев по старым сообщениям.

 // Forces comments for old posts to be *allowed* regardless // of settings within the Settings > Discussion page. add_filter( 'option_close_comments_for_old_posts', 'wpse_modify_close_comments_for_old_posts' ); function wpse_modify_close_comments_for_old_posts( $close_comments_for_old_posts ) { // Don't do anything for the admin area. Return the originally set value of the option. if ( is_admin() ) { return $close_comments_for_old_posts; } // This array contains the posts IDs where we want to // override the settings for closing comments for old posts. // (Comments will be forced open for these posts.) $close_comments_for_old_posts_overrides = [ 149, 150, 151, ]; // Handle case when a comment is being made. if ( isset( $_POST['comment'] ) && isset( $_POST['comment_post_ID'] ) ) { if ( in_array( $_POST['comment_post_ID'], $close_comments_for_old_posts_overrides ) ) { // Comments should be open for this post. return false; } } // Handle case when post is displayed. global $wp_query; if ( ! is_array( $wp_query->posts ) ) { // There are no posts to display. Don't change the option. return $close_comments_for_old_posts; } foreach ( $wp_query->posts as $post ) { if ( in_array( $post->ID, $close_comments_for_old_posts_overrides ) ) { // Comments should be open for this post. return false; } } // If we get here, return the original value of the option without altering it. return $close_comments_for_old_posts; }