2014-12-30 91 views
4

WordPress的Woocommerce建議我與宇commerece插件工作,我想有一子每個產品的標題標題下。然而 樣式和格式進行排序,我想一個特定的類別涉及的子標題部分顯示。我已經成功地獲得儘可能顯示所有類別,但我想縮小這個下降到只有一類是父類。 下面是我使用的代碼,任何人都可以建議我怎麼能實現顯示父類別下選擇任何子類。 感謝有PHP代碼

<?php 
/** 
* Single Product title 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  1.6.4 
*/ 

if (! defined('ABSPATH')) exit; // Exit if accessed directly 

global $post, $product; 

$cat_count = sizeof(get_the_terms($post->ID, 'product_cat')); 
?> 

<h1 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h1> 

<?php echo $product->get_categories(', ', '<span class="posted_in">' . _n('Artist:', 'Artist:', $cat_count, 'woocommerce') . ' ', '.</span>'); ?> 

這一下就出來了:

Array ([0] => stdClass Object ([term_id] => 59 [name] => Colourful [slug] => colourful [term_group] => 0 [term_taxonomy_id] => 59 [taxonomy] => product_cat [description] => [parent] => 115 [count] => 21 [filter] => raw) [1] => stdClass Object ([term_id] => 96 [name] => Karen Grant [slug] => karen-grant [term_group] => 0 [term_taxonomy_id] => 96 [taxonomy] => product_cat [description] => [parent] => 90 [count] => 5 [filter] => raw) [2] => stdClass Object ( [term_id] => 69 [name] => Landscapes [slug] => landscapes [term_group] => 0 [term_taxonomy_id] => 69 [taxonomy] => product_cat [description] => [parent] => 115 [count] => 35 [filter] => raw) [3] => stdClass Object ([term_id] => 71 [name] => Nature [slug] => nature [term_group] => 0 [term_taxonomy_id] => 71 [taxonomy] => product_cat [description] => [parent] => 115 [count] => 20 [filter] => raw))

<?php 

/** 
* Single Product title 
* 
* @author  WooThemes 
* @package  WooCommerce/Templates 
* @version  1.6.4 
*/ 

if (! defined('ABSPATH')) exit; // Exit if accessed directly 


global $post, $product; 

$cat_count = sizeof(get_the_terms($post->ID, 'product_cat')); 
?> 


<h1 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h1> 

<?php 


    global $post, $product; 

    $cat_array = array(); 
    $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details 

    foreach($term_list as $cat_list) 
    { 

     array_push($cat_array, $cat_list->term_id); 

    } 

    $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array 

    $termchildren = get_term_children('90' , 'product_cat'); //New Line in Updattion -1 

    $final_result = array_intersect($cat_array,$termchildren); print_r($final_result); 

    $new_cat_id = $final_result[0]; 

    $cat_url = get_term_link ($new_cat_id, 'product_cat'); //get link of parent ID 

    $term = get_term($new_cat_id, 'product_cat'); //Get Name of the parent from the parent ID 

    $name = $term->name; //Store it into an varialbe 

    echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>"; 
?> 

'

+0

我沒有得到你,請你詳細說明一下嗎? –

+0

我在我的網站上有一個產品,我想在產品標題下添加產品的藝術家。我已經這樣做了,但我想顯示藝術家的名字。每個藝術家也是一個類別,所以我想顯示鏈接到這個產品的類別,但我有其他類別鏈接到這個。我想只允許顯示藝術家的父類別,這將消除所有其他類別。父類別是藝術家,有沒有辦法說產品類別的藝術家,以便它不會僅顯示來自藝術家的所有類別的孩子。 – user3816812

+0

我仍然沒有得到它:)但我得到的是,你只想在藝術家的標題下面有一個名字。所以如果是這種情況,我會建議你處理'custom field'並檢索它。 –

回答

5

試試這個:

<?php 

    global $post, $product; 

    $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details 

    $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array 

    $cat_url = get_term_link ($cat_id, 'product_cat'); //get link of parent ID 

    $term = get_term($cat_id, 'product_cat'); //Get Name of the parent from the parent ID 

    $name = $term->name; //Store it into an varialbe 

    echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>"; 

?> 

記住:

WooCommerce,產品類別並不正常類,它們是專門爲產品這是剛剛貼上「類別」創建自定義分類

讓我知道,如果您有任何疑問。

更新時間:

<?php 

     global $post, $product; 

     $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details 

     $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array 

     $termchildren = get_term_children('90' , 'product_cat'); //New Line in Updattion -1 

     $new_cat_id = $termchildren[2]; 

     $cat_url = get_term_link ($new_cat_id, 'product_cat'); //get link of parent ID 

     $term = get_term($new_cat_id, 'product_cat'); //Get Name of the parent from the parent ID 

     $name = $term->name; //Store it into an varialbe 

     echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>"; 

    ?> 

新的更新(2015年1月2日)

<?php 

     global $post, $product; 

     $cat_array = array(); 
     $term_list = wp_get_post_terms($post->ID, 'product_cat', array("fields" => "all")); //get array containing category details 

     foreach($term_list as $cat_list) 
     { 

      array_push($cat_array, $cat_list->term_id); 

     } 

     $cat_id = ($term_list[0]->parent); //get parent category ID from the above generated array 

     $termchildren = get_term_children('90' , 'product_cat'); //New Line in Updattion -1 

     $final_result = array_intersect($cat_array,$termchildren); 

     $final_cat_result = array_values($final_result); 

     $new_cat_id = $final_cat_result[0]; 

     $cat_url = get_term_link ($new_cat_id, 'product_cat'); //get link of parent ID 

     $term = get_term($new_cat_id, 'product_cat'); //Get Name of the parent from the parent ID 

     $name = $term->name; //Store it into an varialbe 

     echo "Artist: <a href='".esc_url($cat_url)."'>".$name."</a>"; 
    ?> 

線:1$post$product兩者都是全局變量。所以在長期要在其他文件中使用它,我們需要在我們的文件中添加該文件文件在使用之前。

行:2一個空白陣列存儲當前產品**的所有類別,我們會在以後的使用它。

線:3wp_get_post_terms用於檢索後的條款(woocommerce其產品類別)。所以,現在我們有一個包含項的所有詳細信息的陣列ID, name等等等等

行:4它是通過上述產生array.We將循環通過陣列的循環,並尋找term_id。我們將使用array_push來存儲所有的術語ID和用於存儲我們將使用空白陣列從管線2.So現在我們有一組term_id

行:9現在我們將使用get_term_children檢索藝術家的兒童項,因爲我們知道藝術家term ID及其fixed.It會給出一個陣列作爲輸出。

線:10array_intersect是有用的匹配兩個陣列和取出僅匹配值(基本上,我們正在尋找在當前的產品類別和所有藝術家類取出只有匹配的類別)。

線:11array_values是有用重新編制索引的陣列(通過添加該行中,我們解決了即將來臨:)錯誤)

線:12現在我們有了一個數組,它是隻有一個值,它是藝術家term ID(這是it.Now你需要從長期ID只獲取名稱和藝術家的鏈接)

線:13取藝術家的鏈接。

Line:15從第14行生成的數組中獲取藝術家的名字並將其存儲在變量中。

Line:16打印需要的東西,我們完成了!

+0

你會更容易看到該網站?我現在可以開放訪問。作爲例子,我正在開發的產品是:https://www.artgiftedbygod.co.uk/online-art-shop/conceptual/repeated-11/ – user3816812

+0

這些數字似乎是其他父貓下的子貓 – user3816812

+0

所以你總是想用'artist'(其ID是** 90 **)作爲父母,然後想要檢索它的孩子......對吧?沒問題。 –