WordPressでタイトルの文字数を制限する方法

wordpress

WordPressで投稿一覧の文字数が多くなってしまうとレイアウトが崩れるのが嫌だったので、文字数制限をしてみました。

functions.phpに制限するコードを書く

//記事のタイトルが規定数以上だった場合は保存できないようにする
function check_title_length( $data ) {
    if ( $data['post_type'] == 'post' ) {
        $title = $data['post_title'];
        $title_length = mb_strlen( $title );

        if ( $title_length > 30 ) {

            // 規定文字数を超えたら保存をキャンセルする
            wp_die( 'タイトルは30文字以下にしてください。' );
        }
    }
    return $data;
}

//wp_insert_post_dataはデータベース保存前に呼ばれる
add_filter( 'wp_insert_post_data', 'check_title_length', '99', 2 );

以上のコードをfunctions.phpに書き込みます

実際に入力して確かめる

旧エディタの場合はこんな風になります。

ブロックエディタの場合はこんな風になります。

これでタイトルの文字数を制限することができました。

wp_insert_post_dataはデータベースに保存する前によばれるのでここでwp_dieを呼び出すことで保存させないようにしています。

記事の内容をここで取得できるので記事のタイトルではなく他の項目も触れるので色々応用が利きそうです。