第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

列出當前分類存檔的類別

列出當前分類存檔的類別

PHP
皈依舞 2023-09-08 14:27:06
這是我的網(wǎng)站:http ://bmi.brownsmedicalimaging.com/product-category/c-arm/我創(chuàng)建了一個名為“產(chǎn)品”的自定義帖子類型。然后我創(chuàng)建了 2 個自定義分類法:類別和制造商。例如,如果我正在查看上面的“C 型臂”類別頁面,它會顯示該類別的 2 篇帖子。我怎樣才能讓它顯示該類別的制造商列表?現(xiàn)在它只輸出我定義的所有制造商。這是我的代碼:add_shortcode( 'my_cat_list', 'my_list_categories_shortcode' );/** * this function outputs your category list where you * use the [my_cat_list] shortcode. */function my_list_categories_shortcode() {    $args = array(         'echo' =>   false,        'taxonomy'   =>     'product-manufacturer',        'title_li' => '',    );    return wp_list_categories( $args ); }
查看完整描述

1 回答

?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

因此,一般來說,這并不是一件大事,但我們應該避免對數(shù)據(jù)庫進行不必要的調(diào)用,而 WordPress 本質(zhì)上并不為我們提供這樣的功能。因此,出于性能原因,我創(chuàng)建了自己的自定義 SQL 查詢。看:


function get_related_list_categories ($term_taxonomy_id, $related_taxonomy)

{

    global $wpdb;


    $sql = "SELECT DISTINCT(term_taxonomy_id)

            FROM {$wpdb->prefix}term_relationships

            WHERE object_id IN (

                SELECT DISTINCT(p.ID)

                FROM {$wpdb->prefix}posts AS p LEFT JOIN {$wpdb->prefix}term_relationships AS tr ON (p.ID = tr.object_id)

                WHERE tr.term_taxonomy_id IN ({$term_taxonomy_id}) AND p.post_type = '{$post_type}' AND (p.post_status = 'publish')

              ) AND term_taxonomy_id IN (

                  SELECT term_id FROM {$wpdb->prefix}term_taxonomy WHERE taxonomy = '{$related_taxonomy}'

              )";


    if (empty($term_ids = $wpdb->get_col($sql))) {

        return FALSE;

    }


    return $wp_list_categories(['include' => $term_ids, 'taxonomy' => $related_taxonomy, 'echo' => false, 'title_li' => '',]);

}


get_related_list_categories($product_category_id, 'product-manufacturer');

再次,我選擇product_category_id作為第一個參數(shù)(而不是 slug),因為我認為您很可能會擁有它,并且不需要進行數(shù)據(jù)庫調(diào)用來獲取 slug。無論哪種方式,您都可以根據(jù)自己的喜好自定義功能。我確信您會有自己的調(diào)整,就像我在找不到條件時返回 false 一樣,但您可能想用另一種方式來做。如果這對您有用,或者您有任何疑問,請告訴我。


更新:如果調(diào)試需要進一步解釋。


sql 查詢由兩個子查詢組成。


SELECT DISTINCT(p.ID)

FROM {$wpdb->prefix}_posts as p

    LEFT JOIN {$wpdb->prefix}_term_relationships as tr ON (p.ID = tr.object_id)

WHERE tr.term_taxonomy_id IN ({$term_taxonomy_id})

    AND p.post_type = '{$post_type}'

    AND (p.post_status = 'publish')

這會找到與當前相關術語相關的所有帖子。它應該與該存檔頁面的帖子 ID 匹配。單獨運行此查詢來測試是否返回正確的帖子 ID。WHERE如果您想針對多個術語或按段等執(zhí)行此操作,則可以調(diào)整該子句。

SELECT term_id

FROM {$wpdb->prefix}_term_taxonomy

WHERE taxonomy = 'related_experience'

第二個子查詢獲取“相關體驗”分類法(或您想要的任何輔助分類法)的所有術語。您應該運行此命令并驗證“l(fā)ated_experience”的所有術語 ID 均已返回

然后,父 sql 查詢連接第一個分類中的帖子 ID,并獲取第二個分類中的所有術語,這些術語也顯示在具有第一個分類的帖子中。


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號