ワードプレスのexcerpt_remove_blocksフィルタの使用方法・解説

概要

excerpt_remove_blocksフィルタは、ワードプレスのコンテンツ内の抜粋に適したブロックをレンダリングするために使用されます。このフィルタを使用することで、ブロックエディターによって作成された投稿から特定のブロックを除去したり、抜粋を適切な形式に変換したりすることができます。具体的には、次のような機能を実装する際によく使われます。

  1. 抜粋に表示するブロックをカスタマイズする
  2. 特定のブロックを除去する
  3. 抜粋に適したスタイルを適用する
  4. テキストベースの抜粋を生成する
  5. ポートフォリオやギャラリーページでの使用
  6. ウィジェット内での抜粋表示
  7. ソーシャルメディアでの要約生成
  8. 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 ブロックを除去します。

この関数について質問する


上の計算式の答えを入力してください