KingCamp コット用マット 184*63cm/197*74cmキャンプマット 滑り止め 固定可能 折りたたみ コンパクト お昼寝 車中泊 テント
Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー) コット
Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー) コット
carrot8_202201221213402621470023-8191-iU0
5,063円 5,956円
Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|02
  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|03
  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|04
  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|05
  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|06
  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|07
  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)|carrot8|08

    Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー)

  • Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー) コット

    <!–more–> で記事を区切ったときに出力される続きを読むリンクや、ターゲットに使われてるspanタグそのものを変更する方法について。

    デフォルトだと、全文が表示されたときに挿入されるソースはこうです。

    <p><span id="more-4"></span></p>
    

    たとえばこれを次のようにDivへ変更する

    </div>
    <div id="more-4">
    

    the_content_more_link について追加

    正規表現置換による方法

    2.5以上だとTinyMCEの性能がいいので大抵以下の正規表現置換で変更出来ると思います。
    このブログのテーマ(Vicuna)もこれで置換しています。
    function.phpに以下をコピペしてみてください。

    function moretag_custom($content) {
    	if (is_page() || is_single()) {
    		$content = preg_replace('/<p><span id="more-([0-9]+?)"><\/span>(.*?)<\/p>/i', "\n</div>\n<div id=\"more-$1\" class=\"entry\">\n<p>$2</p>", $content);
    	}
    	return $content;
    }
    add_action('the_content', moretag_custom, 100);
    

    条件にマッチしないとスルーしてしまうので、いくつかパターンを用意した方が確実です。
    2.5より前のバージョンだと、綺麗にPタグ内にspanが入ってなかったりaタグだったりするので合わせて正規表現の条件を変える必要があります。
    また、#more-postIDの書式を変更した場合、続きを読むリンクのターゲットも変更しておく必要があります。

    get_extended()関数による方法

    チラッと書いたget_extended()でも一応やれます。

    single.phpとかで(以下はDefaultテーマ用)

    <?php $contents = get_extended($post->post_content); ?>
    <div class="post" id="post-<?php the_ID(); ?>">
    <h2><?php the_title(); ?></h2>
    <div class="entry">
    	<?php print(wpautop($contents[main])); ?>
    <?php if(!empty($contents[extended])):?>
    </div>
    <div id="more-<?php the_ID();?>">
    	<?php print(wpautop($contents[extended])); ?>
    <?php endif;?>
    

    見ての通りthe_content()を使ってないので、category.phpとかindex.phpには不向き。
    この場合も、リンクの#more-postIDの書式を変更する場合は、続きを読むリンクのターゲットも変更しておく必要があります。

    「続きを読む」リンクのスタイル変更

    デフォルトのリンクテキストは(more…)で、#more-記事IDにリンクされています。

    《限定コラボ品》【ASHYA X MICHAEL KORS】 MOYA マルチバッグ

    <?php the_content("『".the_title('', '', false)."』の続きを読む&raquo;"); ?>
    

    ▼ソースはこう

    <p><a class="more-link" href="http://localhost/wordpress/?p=1#more-1">Hello world!の続きを読む»</a></p>
    

    タグも使えます

    <?php the_content(__('<span class="moretext">Read the rest of this entry &raquo;</span>', 'kubrick')); ?>
    

    デフォルトテーマだと翻訳解けちゃうのでmoファイルの修正が必要。

    ソースそのものの変更は次のような方法があります。

    正規表現による置換

    vicunaのソースを参考に、上の置換にelseを追加する。

    function.php

    【関税込/エレガンス】アリスオリビア/リラックスクロップタンク

    preg_replace内の中央の引数を変更すれば別の書式に出来ます。

    コアのソースそのものを変更

    上記で挙げた変更はコアファイルのソースを変更しても同じことが出来ます。
    wordpressのバージョンアップしたら戻ってしまいますが、テーマやエディタに依存しないので確実かも。

    挿入されるspanタグの変更はwp-includes/post-template.phpの121行目くらいに次の文があるので

    $output .= '<span id="more-'.$id.'"></span>'.$content[1];
    

    国内発送/トリーバーチ★PERFORATED ロゴ エスパドリーユ_NAPPA

    $output .= '</div><div id="more-'.$id.'">'.$content[1];
    

    続きを読むリンクの変更は125行目くらいに次の文があるので

    $output .= ' <a href="'. get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>";
    

    好きなように変更するだけでおk。

    $output .= '<p class=\"more-link\"><a href="'. get_permalink() . "#more-$id\">$more_link_text</a></p>";
    

    参考:☆COACH☆ROUND HYBRID POUCH IN COLORBLOCK SIGNATURE CANVAS

    Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー) コット

    アクションフィルターにthe_content_more_linkというのが追加されたので、こいつを使えば割と簡単にmoreリンクの変更が可能。

    付与されるIDを消して#moreだけにするサンプル:

    function custom_more_link( $more_link ) {
    	$more_link = preg_replace('/#more-[\d]+/i', '#more', $more_link );
    	return $more_link;
    }
    add_filter( 'the_content_more_link', 'custom_more_link', 10 );
    

    この場合のcustom_more_linkには引数でアンカータグしか渡されないが、
    add_filterの一番最後に引数の数を指定する2を追加すると、リンクテキストも得る事が出来るようになる。

    付与されるIDを消して#moreだけにした上でテキストも変える:

    function custom_more_link( $more_link, $more_link_text ) {
    	$more_link = preg_replace('/#more-[\d]+/i', '#more', $more_link );
    	return str_replace($more_link_text, "『".the_title('', '', false)."』の続きを読む&raquo;", $more_link);
    }
    

    リンクテキストの変更はthe_contentでも可能だからオマケ扱い。

    しかしこのthe_content_more_linkで変更出来るのはリンク部分だけなので、
    moreリンクの親(pタグ)にクラスを付与する場合にはやっぱり正規表現置換するしかない。

    function moretag_custom($content) {
    	if (is_page() || is_single()) {
    		$content = preg_replace('/(?:<p>)*<span id="more-([0-9]+?)"><\/span>(.*?)(?:<\/p>)*/i', "\n</div>\n<div id=\"more\" class=\"entry\">\n$2", $content);
    	}else{
    		$content = preg_replace('/<p>\s*<a href="(.+?)#more" class="more-link">(.+?)<\/a><\/p>/', '<p class="more"><a href="$1#more" class="more-link">$2</a></p>', $content);
    	}
    	return $content;
    }
    function custom_more_link( $more_link, $more_link_text ) {
    	$more_link = preg_replace('/#more-[\d]+/i', '#more', $more_link );
    	return str_replace($more_link_text, "『".the_title('', '', false)."』の続きを読む&raquo;", $more_link);
    }
    add_action('the_content', moretag_custom, 100);
    add_filter( 'the_content_more_link', 'custom_more_link', 10, 2 );
    

    Sykooria 寝袋マット キャンプ 車中泊 極厚20mm R値2.0テント泊 超軽量 保温 IXPE素材 アルミフィルム (イェロー) コット

    1. includeでは出来ませんでしたが、get_extendedでは問題なく出来ました
      出来ればfunctions.phpで済ませたいところなので、正規表現置換の方はもう少し自分で試行錯誤してみようと思います
      丁寧に答えて頂いてとても助かりました
      ありがとうございました

    2. ピンバック:
    3. ピンバック:

    このサイトはスパムを低減するために Akismet を使っています。。

    HOSTING.NAYATEL.COM RSS