web-dev-qa-db-ja.com

ブログページにデフォルトエディタを表示する(管理パネル)

WordPress 4.2では、どのページがフロントページで、どのページがブログ(Latest Posts)であるかをラベル付けするNice機能が含まれていました。残念ながら、最新の投稿を表示するために割り当てられているページのデフォルトエディタも削除され、代わりに次のメッセージが表示されます。

現在、最新の投稿を表示しているページを編集しています。

ブログページに最近の投稿の上に表示するコンテンツを割り当てます。

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

個別のメタボックスを追加せずに、デフォルトのWPエディタを管理パネルのブログページに再度追加する方法を教えてください。

6
Howdy_McGee

WordPress 4.2では、何らかの理由で最新の投稿を表示するために割り当てられていたページで、エディタが削除されました。以下の関数( ここで見つけたオリジナルの解決策 by crgeary )はエディタを再追加して通知を削除します。

現在、最新の投稿を表示しているページを編集しています。

これは、使用されているフックに関する情報です。


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
Howdy_McGee