概要
excerpt_remove_blocks
フィルタは、ワードプレスのコンテンツ内の抜粋に適したブロックをレンダリングするために使用されます。このフィルタを使用することで、ブロックエディターによって作成された投稿から特定のブロックを除去したり、抜粋を適切な形式に変換したりすることができます。具体的には、次のような機能を実装する際によく使われます。
- 抜粋に表示するブロックをカスタマイズする
- 特定のブロックを除去する
- 抜粋に適したスタイルを適用する
- テキストベースの抜粋を生成する
- ポートフォリオやギャラリーページでの使用
- ウィジェット内での抜粋表示
- ソーシャルメディアでの要約生成
- SEO対策のためのカスタマイズ
構文
add_filter('excerpt_remove_blocks', 'callback_function', 10, 2);
パラメータ
string $content
:フィルタ処理を受けるコンテンツの文字列。WP_Post $post
:現在の投稿オブジェクト。
戻り値
string
:フィルタ処理後のコンテンツ文字列。
関連する関数
excerpt_remove_blocksフィルタで使用可能な関数
使用可能なバージョン
このフィルタは、WordPress 5.4以降で使用可能です。
コアファイルのパス
wp-includes/post-template.php
この関数のアクションでの使用可能性
アクション | 使用可否 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: 特定のブロックを抜粋から除去
add_filter('excerpt_remove_blocks', function($content, $post) {
// 'core/image' ブロックを除去
return str_replace('<!-- wp:image -->', '', $content);
}, 10, 2);
このコードは、抜粋内から core/image
ブロックを除去します。
サンプル2: 抜粋をテキストのみの表示に変換
add_filter('excerpt_remove_blocks', function($content, $post) {
// ブロックをすべて変換してテキストの抜粋を返す
return wp_strip_all_tags($content);
}, 10, 2);
このコードは、すべてのブロックを除去し、単純なテキストとして抜粋を返します。
サンプル3: 特定のブロックを抜粋内でスタイル変更
add_filter('excerpt_remove_blocks', function($content, $post) {
// 'core/paragraph' ブロックにクラスを追加
return str_replace('<p>', '<p class="custom-class">', $content);
}, 10, 2);
このコードは、core/paragraph
ブロックに特定のクラスを追加して抜粋を返します。
サンプル4: 複数のブロックを除去
add_filter('excerpt_remove_blocks', function($content, $post) {
// 'core/image' と 'core/gallery' ブロックを除去
$content = str_replace('<!-- wp:image -->', '', $content);
$content = str_replace('<!-- wp:gallery -->', '', $content);
return $content;
}, 10, 2);
このコードは、抜粋内から複数のブロック(画像とギャラリー)を除去します。
サンプル5: 特定のユーザータイプによるカスタマイズ
add_filter('excerpt_remove_blocks', function($content, $post) {
if (current_user_can('editor')) {
// 編集者の場合は特定のブロックを残す
return $content;
}
// それ以外の場合は'core/quote'を除去
return str_replace('<!-- wp:quote -->', '', $content);
}, 10, 2);
このコードは、ユーザーが編集者の場合、抜粋内のすべてのブロックを保持し、それ以外のユーザーにはcore/quote
ブロックを除去します。