我正在尝试创建一组动态下拉列表,其中包含WooCommerce的类别和子类别。我很难知道如何实现这一目标。我知道woocommerce有一个可以下拉的小部件,但这不是我想要的。我创建了一个示例here,显示了我想要实现的内容......这个示例是从JSON文件中提取猫和子猫。
我不是在寻找代码解决方案,只是试图了解我可以从WooCommerce的API获取什么,所以我可以有一个起点。我对WooCommerce的API及其能够实现的目标并不熟悉,因此对我来说这是一个未知的领域。
任何人都有任何反馈,我非常感激。
谢谢。
塞尔
答案 0 :(得分:1)
这是一个显式代码示例,它仅使用Wordpress函数,并将在多维数组中分层输出所有产品类别的原始必要数据。正如您将看到的那样,您不需要非常熟悉WooCommerce API,因为它是Wordpress自定义分类。
我已将此功能挂钩,以便在档案和产品页中输出您的产品类别原始数据(仅用于测试目的):
add_action( 'woocommerce_before_main_content', 'get_product_categories_data' );
function get_product_categories_data(){
$result = array();
$taxonomy = 'product_cat';
$level1_terms = get_terms( array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'parent' => 0,
) );
foreach($level1_terms as $term1){
$level2_terms = get_terms( array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'parent' => $term1->term_id,
) );
$result[$term1->term_id] = array(
'id' => $term1->term_id,
'name' => $term1->name,
'level' => '1',
'link' => esc_url( get_term_link( $term1->term_id, $taxonomy ) ),
);
if(count($level2_terms) > 0){
foreach($level2_terms as $term2){
$level3_terms = get_terms( array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'parent' => $term2->term_id,
) );
$result[$term1->term_id]['childs'][$term2->term_id] = array(
'id' => $term2->term_id,
'name' => $term2->name,
'level' => '2',
'link' => esc_url( get_term_link( $term2->term_id, $taxonomy ) ),
);
if(count($level3_terms) > 0){
foreach($level3_terms as $term3){
$level4_terms = get_terms( array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'parent' => $term3->term_id,
) );
$result[$term1->term_id]['childs'][$term2->term_id]['childs'][$term3->term_id] = array(
'id' => $term3->term_id,
'name' => $term3->name,
'level' => '3',
'link' => esc_url( get_term_link( $term3->term_id, $taxonomy ) ),
);
if(count($level4_terms) > 0){
foreach($level4_terms as $term4){
$result[$term1->term_id]['childs'][$term2->term_id]['childs'][$term3->term_id]['childs'][$term4->term_id] = array(
$term4->term_id => array(
'id' => $term4->term_id,
'name' => $term4->name,
'level' => '4',
'link' => esc_url( get_term_link( $term4->term_id, $taxonomy ) ),
)
);
}
}
}
}
}
}
}
echo '<pre>'; print_r($result); echo '</pre>'; // Raw data output (for testing)
// return $result;
}
原始输出 - 您将获得4个类别/子类别级别,类似于此摘录:
Array
(
[11] => Array
(
[id] => 11
[name] => Clothing
[level] => 1
[link] => http://www.example.com/clothing/
[childs] => Array
(
[12] => Array
(
[id] => 12
[name] => Hoodies
[level] => 2
[link] => http://www.example.com/clothing/hoodies/
[childs] => Array
(
[36] => Array
(
[id] => 36
[name] => Hood 1
[level] => 3
[link] => http://www.example.com/clothing/hoodies/hood1/
[childs] => Array
(
[85] => Array
(
[id] => 85
[name] => Sub Hood 1
[level] => 4
[link] => http://www.example.com/clothing/hoodies/hood1/sub-hood-1/
)
)
)
[37] => Array
(
[id] => 37
[name] => Hood 2
[level] => 3
[link] => http://www.example.com/clothing/hoodies/hood2/
)
)
)
[16] => Array
(
[id] => 16
[name] => T-shirts
[level] => 2
[link] => http://www.example.com/clothing/t-shirts/
)
)
)
)
假设您能够在JSON格式化数据数组中分派必要的数据,就像链接的实时下拉列表示例一样。