Показать Редактор по умолчанию на странице Блога (Панель администрирования)


В WordPress 4.2 он включал приятную функцию, которая указывала, какая страница была главной страницей, а какая страница была блогом (Последние сообщения). К сожалению, он также удаляет редактор по умолчанию на странице, назначенной для отображения последних сообщений, и вместо этого показывает следующее сообщение:

В настоящее время вы редактируете страницу, на которой отображаются ваши последние сообщения.

Я хочу назначить контент странице блога, чтобы он отображался над моими последними публикациями через:

get_post_field( 'post_content', get_option( 'page_for_posts' ) );

Как я могу повторно добавить редактор WP по умолчанию на страницу блога в панели администрирования без добавления отдельного метабокса?

Author: Howdy_McGee, 2015-07-07

2 answers

В WordPress 4.2 редактор был удален на любой странице, назначенной для отображения последних сообщений по какой-либо причине. Следующая функция ниже (оригинальное решение, найденное здесь crgeary), повторно добавит редактор и удалит уведомление:

В настоящее время вы редактируете страницу, на которой отображаются ваши последние сообщения.

Вот некоторая информация об используемых крючках:

  • edit_form_after_title - Используется для удаления вышеупомянутого администратора уведомление.
  • add_post_type_support - Используется для возврата поддержки редактора на страницу последних сообщений.


if( ! function_exists( 'fix_no_editor_on_posts_page' ) ) {

    /**
     * Add the wp-editor back into WordPress after it was removed in 4.2.2.
     *
     * @param Object $post
     * @return void
     */
    function fix_no_editor_on_posts_page( $post ) {
        if( isset( $post ) && $post->ID != get_option('page_for_posts') ) {
            return;
        }

        remove_action( 'edit_form_after_title', '_wp_posts_page_notice' );
        add_post_type_support( 'page', 'editor' );
    }
    add_action( 'edit_form_after_title', 'fix_no_editor_on_posts_page', 0 );
 }

Редактировать для WordPress 4.9

Начиная с WordPress 4.9.6, это не позволяет повторно установить редактор. Похоже, что действие edit_form_after_title вызывается недостаточно быстро. Эта модификация, вызванная на самом раннем не устаревшем крючке после удаления редактора в edit-form-advanced.php, похоже, работает нормально.

Помимо смены крючка, есть изменение в номере параметров тоже.

if( ! function_exists( 'fix_no_editor_on_posts_page' ) ) {

    function fix_no_editor_on_posts_page( $post_type, $post ) {
        if( isset( $post ) && $post->ID != get_option('page_for_posts') ) {
            return;
        }

        remove_action( 'edit_form_after_title', '_wp_posts_page_notice' );
        add_post_type_support( 'page', 'editor' );
    }

    add_action( 'add_meta_boxes', 'fix_no_editor_on_posts_page', 0, 2 );

 }
 14
Author: Howdy_McGee, 2018-07-04 17:26:26

Прошло некоторое время, но я наткнулся на эту тему, когда искал способ включить редактор Гутенберга на странице блога. Не нашел никакой подсказки в Google, поэтому я нырнул в код wordpress и нашел решение. Вот код:

add_filter( 'replace_editor', 'enable_gutenberg_editor_for_blog_page', 10, 2 );
/**
 * Simulate non-empty content to enable Gutenberg editor
 *
 * @param bool    $replace Whether to replace the editor.
 * @param WP_Post $post    Post object.
 * @return bool
 */
function enable_gutenberg_editor_for_blog_page( $replace, $post ) {

    if ( ! $replace && absint( get_option( 'page_for_posts' ) ) === $post->ID && empty( $post->post_content ) ) {
        // This comment will be removed by Gutenberg since it won't parse into block.
        $post->post_content = '<!--non-empty-content-->';
    }

    return $replace;

}

Я использовал фильтр 'replace_editor' только потому, что это последний фильтр/действие, используемое перед проверкой, должен ли загружаться Гутенберг. Это может быть любой более ранний фильтр или действие с текущим доступным объектом post.

WordPress проверяет две вещи: если текущий идентификатор записи совпадает с параметром page_for_posts, и если содержимое пустое, поэтому в этом фильтре мы просто добавим немного поддельного контента, который будет удален Гутенбергом, так как это случайный HTML-комментарий.

Надеюсь, кто-нибудь найдет это полезным:)

 5
Author: Wojtek Szałkiewicz, 2019-10-15 13:51:12