_acf_terms_clauses()


WordPressの関数_acf_terms_clauses()は、Advanced Custom Fields(ACF)プラグインと共に使用され、カスタムタクソノミーのタームに関連するSQLクエリをフィルタリングするために利用されます。

構文

_acf_terms_clauses( string $sql, string $taxonomy, array $args );

引数の説明:

  • $sql (string) — クエリに追加されるSQL文。
  • $taxonomy (string) — 対象のタクソノミーの名前。
  • $args (array) — クエリを修正するための追加の引数。

例1: 基本的なSQLの変更

カスタムタクソノミーに関連するSQLクエリを変更します。

add_filter('acf/terms_clauses', function($sql, $taxonomy, $args) {
    if ($taxonomy == 'category') {
        $sql .= " AND wp_terms.name LIKE 'Tech%'";
    }
    return $sql;
}, 10, 3);

例2: 特定の引数を使用してSQLを変更

特定の引数を使ってSQL文を修正します。

add_filter('acf/terms_clauses', function($sql, $taxonomy, $args) {
    if (isset($args['orderby'])) {
        $sql .= " ORDER BY wp_terms.name ASC";
    }
    return $sql;
}, 10, 3);

例3: タクソノミーに基づくフィルタリング

特定のタクソノミーに基づいてタームをフィルタリングします。

add_filter('acf/terms_clauses', function($sql, $taxonomy, $args) {
    if ($taxonomy == 'post_tag') {
        $sql .= " AND wp_terms.name NOT LIKE 'Featured%'";
    }
    return $sql;
}, 10, 3);

例4: カスタム引数の使用

クエリにカスタム引数を追加してSQLを変更します。

add_filter('acf/terms_clauses', function($sql, $taxonomy, $args) {
    if (isset($args['include'])) {
        $sql .= " AND wp_terms.term_id IN (" . implode(',', $args['include']) . ")";
    }
    return $sql;
}, 10, 3);

例5: 条件付きでSQLを変更

条件に応じてSQLを変更します。

add_filter('acf/terms_clauses', function($sql, $taxonomy, $args) {
    if ($taxonomy == 'product_cat' && !empty($args['exclude'])) {
        $sql .= " AND wp_terms.term_id NOT IN (" . implode(',', $args['exclude']) . ")";
    }
    return $sql;
}, 10, 3);

注意点

  • _acf_terms_clauses()はACFプラグインが有効化されている環境でのみ機能します。
  • SQLクエリの変更は、パフォーマンスに影響を与える場合があるため、使用には注意が必要です。