指定タグの何回目といった処理を行いたい場合

概要説明

広告の挿入などでよく使われるカスタマイズ。見出しタグの何番目、最後を判定し任意の内容を追加することができます。

functions.php
/*----------------------------------------------------
 指定タグの何回目といった処理を行いたい場合
----------------------------------------------------*/
if ( !function_exists( 'replace_time_tag' ) ){
    function replace_time_tag($the_content) {

        $target_tag = '/<h3.*?>.+?<\/h3>/i';
        $add_tag[0] = '<p>1回目</p><hr>'; // 1回目のタグの前に追加したい内容
        $add_tag[1] = '<p>2回目</p><hr>'; // 2回目のタグの前に追加したい内容

        // 記事ページ詳細
        if(is_single()) {
            if(preg_match_all($target_tag, $the_content, $match_tags)) {
                // 1回目の該当タグが存在する場合
                if (isset($match_tags[0][0])) {
                    // 追加したい記述をタグの前に追加
                    $the_content = str_replace($match_tags[0][0], $add_tag[0] . $match_tags[0][0], $the_content);
                }
                // 2回目の該当タグが存在する場合
                if (isset($match_tags[0][1])) {
                    // 追加したい記述をタグの前に追加
                    $the_content = str_replace($match_tags[0][1], $add_tag[1] . $match_tags[0][1], $the_content);
                }
            }
        }
        return $the_content;
    }
    add_filter('the_content','replace_time_tag');
}

最後のh3タグの前にコンテンツを追加したい場合

functions.php
/*----------------------------------------------------
 指定タグの最後のタグで処理を行いたい場合
----------------------------------------------------*/
if ( !function_exists( 'replace_last_tag' ) ){
    function replace_last_tag($the_content) {

        $target_tag = '/<h3.*?>.+?<\/h3>/i';
        $add_tag    = '<p>最後のタグ</p><hr>';

        // 記事ページ詳細
        if(is_single()) {
            if(preg_match_all($target_tag, $the_content, $match_tags)) {
                $last_key = array_key_last($match_tags[0]);
                // 該当タグの最後のタグが存在する場合
                if ( $last_key ) {
                    if (isset($match_tags[0][$last_key])) {
                        // 追加したい記述をタグの前に追加
                        $the_content = str_replace($match_tags[0][$last_key], $add_tag . $match_tags[0][$last_key], $the_content);
                    }
                }
            }
        }
        return $the_content;
    }
    add_filter('the_content','replace_last_tag');
}

画像の場合の正規表現サンプル

$target_tag = '/<\s*img [^\>]*src\s*=\s*[\""\']?([^\""\'>]*).+?\/?>/i';

ページ指定の条件補足

// 固定ページ、投稿ページ、カスタム投稿ページ
is_single()

// 固定ページ
is_singular('page')

// 投稿ページ('post')
is_singular('post')

// 特定のカスタム投稿ページ
is_singular('news')

// 投稿IDを指定したい場合
is_single($post->id)

WordPress Developer Resources

関連機能

  1. WordPressプラグインなしでカスタム投稿をタイトル、本文、アイキャッチ、カテゴリーを有効にして設定

  2. WordPress カテゴリーごとにテキスト色、背景色の設定が行えるように項目を追加する

  3. 投稿ページのサイトマップをプラグイン無しで実装できるショートコード

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

天才は嫌いだ
積み重ねたものの美しさが無い

葬送のフリーレン
by リュグナー

Profile

PAGE TOP
Amazon プライム対象