blue

囲み型ショートコードと the_excerpt()

  • Posted by: SOMA Hitoshi
  • December 27, 2016 12:14 PM
  • wordpress

 WordPressの話。

 「 wp the_excerpt pタグ 削除」というのもよく検索されるカスタマイズだと思うが、今回はその逆。the_excerpt()の出力結果が pタグで囲まれるのはいいのだが、記事によって囲まれないものがあることに気づいた。

 どうやら記事中で囲み型のショートコードが使われている(当方の具体的状況としては Visual Composerを使っていて、記事全体がショートコードに囲まれたなかにある)場合に、出力が pタグで囲まれない。

 WordPressコアのフィルター処理を追いかけた結果、ショードコードにかんする処理と、pタグで囲む処理= wpautop()の順序の問題であるらしいとわかり、以下のコード( functions.php用)で解決。

remove_filter( 'the_excerpt', 'wpautop' );
add_filter( 'the_excerpt', 'wpautop' , 12);

 以上。

 WordPressのフィルターはデフォルトの処理優先順位が 10、ショートコードは 11なので、wpautop()のあとにショートコードまわりの処理が実行される。それを変え、the_excerptにかけられる wpautop()の優先順位を明示的に「 12」にするのが上のコード。

関連記事

トラックバック(0)

トラックバックURL: http://web-conte.com/blue/mt-tb.cgi/1087

 

広告