[wordpress]記事投稿時に文字列を置換させる方法

記事投稿時に強制的に文字列を置換させる方法は以下の通り

ワーカーさんに文章をお願いして作成した文章が「です・ます」調で、「だ」調に変換したいけど、1個1個修正するのがめんどくさい時に使える。

function.phpに以下のコードを追加

  /**
 * 投稿時にコンテンツを自動修正
 */

add_filter( 'wp_insert_post_data' , 'replace_post_data' , '99', 2 ); 

function replace_post_data($data, $postarr){
    
    $search[] = 'なります。';
    $replace[] = 'なる。';
    
    $search[] = 'します。';
    $replace[] = 'する。';
    
    $search[] = 'ます。';
    $replace[] = 'る。';
    
    $search[] = 'です。';
    $replace[] = '。';
    $modified = str_replace($search,$replace,$data[‘post_content’]);
    
    $data['post_content'] = $modified;
    return $data;
}
 

wp_insert_post_dataにフックさせる関数を作成すればよく、受け取ったデータのpost_contentを変更すればOK

ですます調を効率よく変換したかったので、str_replaceの配列による置換を行っている。

post_content以外のパラメータも変更できる。その他のパラメータはReference/wp insert post dataを参考のこと。

投稿時に自動的に不要なタグを除去する

またpost_content内の不要なHTMLタグを除去したい場合は以下の通り「wp_kses」を使用すると必要なタグだけ残せる。

<?php /** * 投稿時に不要なタグを除去 */ add_filter( 'wp_insert_post_data' , 'replace_post_data' , '99', 2 ); function replace_post_data($data, $postarr){ // 許可するタグ $param = array( 'a' => array(
            // 属性も残す場合は指定が必要
            'href' => array(),
        ),
        'h2' => array(),
        'h3' => array(),
        'br' => array(),
    );
    $modified = wp_kses($data['post_content'], $param);
    $data['post_content'] = $modified;
    return $data;
}

2 thoughts on “[wordpress]記事投稿時に文字列を置換させる方法

  • 2018年3月20日 at 2:23 PM
    Permalink

    $modified = str_replace($search,$replace,$modified);
    ここは
    $modified = str_replace($search,$replace,$data[‘post_content’]);
    ですかね。

    Reply
    • 2018年3月27日 at 8:23 PM
      Permalink

      なるほど!ありがとうございます!
      早速修正しました

      Reply

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です