0

これが私が抱えているジレンマです。私のテーマオプションは、カスタム分類変数をスラッグ名ではなく ID 番号として渡します。したがって、"news" を渡す代わりに "4" を渡します。

私は動作するこのハードコードを持っています:

$wp_query = new WP_Query(array('slidecat' => 'extra', 'showposts'=>$slides));

ただし、このコードはスラッグでのみ機能します。したがって、'extra' を $slider_category (テーマ オプションの選択フィールドが渡す変数) に置き換えると、コードは機能しません。

4

1 に答える 1

1

タクソノミーIDをお持ちの場合は、データベースに直接クエリを実行してスラッグに到達する方が簡単です。

function get_term_by_taxonomy_id($term_taxonomy_id) {
    global $wpdb;
    $taxonomy = $wpdb->get_row( $wpdb->prepare( 
        "SELECT * FROM $wpdb->term_taxonomy wta
            INNER JOIN $wpdb->terms wt ON (wta.term_id = wt.term_id)
            WHERE wta.term_taxonomy_id = %d", $term_taxonomy_id 
    ) );

    return $taxonomy;
}

$cat = get_term_by_taxonomy_id($slider_category);
// at this point you should check if $cat is null (in case of an error)
$wp_query = new WP_Query(array('slidecat' => $cat->slug, 'showposts'=>$slides));

もちろん、スラグはさまざまな分類法に適用できます。たとえば、categorypost_tagという名前のスラグを使用することができ"hello"ます。slidecatしたがって、実装方法とサポートされている分類法によって異なります。

于 2012-10-16T09:42:45.947 に答える