WordPressが不要なタグを補完するのを止める方法

ワードプレスのブロックエディタが不要なタグを補完する機能は、通常の動作として組み込まれていますが、カスタマイズして無効化する方法があります。
以下の手順に従って、不要なタグの補完を停止することができます。

注意:functions.phpを編集する必要があります。ファイルのバックアップを取っておきましょう。

  1. functions.phpというファイルを探します。ファイルの場所は/wp-content/themes/テーマ名/functions.php
  2. functions.phpファイルをテキストエディタで開きます。
  3. 下記のコードを追加します。
  4. ファイルを保存して、FTPクライアントなどでサーバーにアップロードします。

変換機能自体を停止させたい場合

add_filter('run_wptexturize', '__return_false');

指定した個所で停止したい場合

// タイトル欄
remove_filter('the_title', 'wptexturize');
// 本文欄
remove_filter('the_content', 'wptexturize');
// コメント欄
remove_filter('comment_text', 'wptexturize');
// 抜粋欄
remove_filter('the_excerpt', 'wptexturize');

pタグの挿入を停止させる場合

// タイトル欄
remove_filter('the_title', 'wpautop');
// 本文欄
remove_filter('the_content', 'wpautop');
// コメント欄
remove_filter('comment_text', 'wpautop');
// 抜粋欄
remove_filter('the_excerpt', 'wpautop');

関数を作って細かく設定する

有効はtrue、無効はfalse

function my_tiny_mce_before_init( $init_array ) {
    //グローバル変数の宣言
    global $allowedposttags;
    //エディタのビジュアル/テキスト切替でコード消滅を防止(自動整形無効化)
    $init_array['valid_elements']          = '*[*]';
    $init_array['extended_valid_elements'] = '*[*]';
    //aタグ内ですべてのタグを仕様可能に
    $init_array['valid_children']          = '+a[' . implode( '|', array_keys( $allowedposttags ) ) . ']';
    $init_array['indent']                  = true;
    //pタグの自動挿入を無効化
    $init_array['wpautop']                 = false;
    $init_array['force_p_newlines']        = false;
    //改行をbrタグに置き換える
    $init_array['force_br_newlines']       = true;
    $init_array['forced_root_block']       = '';
    return $init_array;
}
add_filter( 'tiny_mce_before_init' , 'my_tiny_mce_before_init' );

ACF(アドバンスカスタムフィールド)上記では自動補完止まらない問題

第三引数$formatにfalseを指定すると、フォーマット処理をキャンセルできます。
現在の投稿IDでよければ、第二引数にfalseを設定することができます。

get_field ( "image_field", false, false );

関数を作る

function acf_field_without_wpautop( $field_name ) {

   remove_filter('acf_the_content', 'wpautop');

   the_field( $field_name );

   add_filter('acf_the_content', 'wpautop');
}

function acf_subfield_without_wpautop( $field_name ) {

   remove_filter('acf_the_content', 'wpautop');

   the_sub_field( $field_name );

   add_filter('acf_the_content', 'wpautop');
}

使用方法は

<?php acf_field_without_wpautop('フィールド名');?>

これで、ワードプレスのブロックエディタが不要なタグを補完する機能が無効化されるはずです。