WordPress

WordPressのタグ入力がENTERキーで勝手に確定されるのを防ぐ

WordPressの管理画面、投稿記事の新規追加・編集フォームにある「タグ」の項目の入力フィールドで、変換と同時に入力内容が確定されるのを防ぐ方法です。そのままでは漢字の後に引き続き入力できなかったりして不便でほぼ不具合レベルです。

何かフックとかあるのかなと思ってググってみたんですが、それらしいこともわからずwp-adminディレクトリ内のファイルをイジる記事しか見つけられなかったので、自作テーマのfunction.php内の記述だけで対処したメモをしておきます。

とはいっても、要は文字変換とかされても勝手に確定されないように.keyupのイベントにバインドされたコールバックを削除してやるだけです。

他の方法でもイケるかもしれませんが、自分の場合はfunction.phpにセットアップ時の関数を作り、管理画面専用の処理を追記しています。

// セットアップ
add_action( 'after_setup_theme', 'my_function');

function my_function () {
  // いろいろな処理

  // 管理画面専用の処理
  if ( is_admin() ) {
    // タグが漢字変換で勝手に確定されるのを防ぐ
    add_action('admin_print_footer_scripts', function () {
echo '<script>
jQuery(document).ready(function($){
  var $field = $('input[data-wp-taxonomy="post_tag"]');
  if ( ! $field.size() ) return;

  $field.off('keyup');
});
</script>';
    }, 21);
  }
}

流れとしては、管理画面にインラインスクリプトを追加、$(document).ready()内で、タグ入力のテキストフィールドがある場合は.keyupにバインドされた関数をOFFにする、だけです。テキストフィールドを指定するセレクタは$('input[data-wp-taxonomy="post_tag"]')とすれば、今のところ新規追加と更新のフォームどちらでも有効、うまく動いてます。

以上、WordPressの管理画面のタグ入力がENTERキーで勝手に確定されるのを防ぐ方法でした。