web-dev-qa-db-ja.com

Slugで複数の用語IDを取得して、それらをget_termsで除外します

get_termsで複数の用語を除外したいのですが、excludeパラメータは用語IDしか受け付けません。そのため、スラッグからIDという用語を取得する必要があります。

これは私がこれまでに持っているものです:

$pres = get_term_by('slug', 'president', $cat_type);
$vice = get_term_by('slug', 'vice-president', $cat_type);
$admin = get_term_by('slug', 'admin', $cat_type);
$rnd = get_term_by('slug', 'rnd', $cat_type);

$ID_pres = $pres->term_id;
$ID_vice = $vice->term_id;
$ID_admin = $admin->term_id;
$ID_rnd = $rnd->term_id;

$terminologies = get_terms( $cat_type, array(
                    'orderby'   => 'term_id',
                    'exclude'   => '???' <<<<
                ) );

ここには本当に間違っていて冗長なものがあると感じましたが、それらをexcludeパラメーターで使用できる配列に入れる方法がわかりません。何か手助け?

3
deathlock

slug引数を使えば、複数のスラッグから項を得ることができます。

$exclude = get_terms ( 
    [ 
        'slug'     => [ 'president', 'vice-president', 'admin', 'rnd' ], 
        'taxonomy' => $cat_type,
        'fields'   => 'ids',
    ] 
);

ここでは、fields引数を使用して用語IDのみを返します。

4
birgire