用于 WordPress 的 PHP 片段,用于获取所有产品子类别
Posted
技术标签:
【中文标题】用于 WordPress 的 PHP 片段,用于获取所有产品子类别【英文标题】:PHP snippet for WordPress to get all product subcategories 【发布时间】:2021-06-17 01:35:21 【问题描述】:我正在尝试为 WordPress 制作一个 sn-p。给定父产品类别的 id,它应该获取所有子类别的列表。
产品类别分为三个级别,如果给定级别 1,则结果应该是每个较低级别中的所有子类别。
我开始编写代码,但没有完成,不知道问题出在哪里。最重要的是,我正在使用 Oxygen 构建器,这就是为什么我在 CodeSnippet 插件上创建了一个短代码,并在 Oxygen 上添加了这个短代码。
这是我正在尝试的代码,这部分应该返回父类别的子类别。
add_shortcode( 'subcategoriasdecategoria', function ()
?>
<ul class="megamenu_categoria2">
<?php
$get_parent_cats = array(
'parent' => '0' //get top level categories only
);
$all_categories = get_categories( $get_parent_cats );//get parent categories
foreach( $all_categories as $single_category )
//for each category, get the ID
$catID = $single_category->cat_ID;
echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //category name & link
$get_children_cats = array(
'child_of' => $catID //get children of this parent using the catID variable from earlier
);
$child_cats = get_categories( $get_children_cats );//get children of parent category
echo '<ul class="megamenu_categoria2">';
foreach( $child_cats as $child_cat )
//for each child category, get the ID
$childID = $child_cat->cat_ID;
//for each child category, give us the link and name
echo '<a class="megamenu_categoria2" href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';
echo '</ul></li>';
//end of categories logic
return $out;
);
谁能帮帮我?
【问题讨论】:
【参考方案1】:首先,您必须获取所有父类别,然后根据父 id,您可以编写一个循环函数,为您提供给定 id 的子类别。检查下面的代码。
function get_child_categories( $parent_category_id )
$html = '';
$child_categories = get_categories( array( 'parent' => $parent_category_id, 'hide_empty' => false, 'taxonomy' => 'product_cat' ) );
if( !empty( $child_categories ) )
$html .= '<ul>';
foreach ( $child_categories as $child_category )
$html .= '<li>'.$child_category->name;
$html .= get_child_categories( $child_category->term_id );
$html .= '</li>';
$html .= '</ul>';
return $html;
function list_categories()
$html = '';
$parent_categories = get_categories( array( 'parent' => 0, 'hide_empty' => false, 'taxonomy' => 'product_cat' ) );
$html.= '<ul>';
foreach ( $parent_categories as $parent_category )
$html .= '<li>'.$parent_category->name;
$html .= get_child_categories( $parent_category->term_id );
$html .= '</li>';
$html.= '</ul>';
return $html;
add_shortcode( 'list_categories', 'list_categories' );
输出
一个 B C D E F G H【讨论】:
非常感谢@Bhautik!获取所有帖子类别效果很好。但是如何使获取所有产品类别?我尝试使用 'product_cat' => $taxonomy 作为参数,但它不起作用。 您应该接受@Bhautik 的回答。是的,product_cat 是正确的分类法。 ***.com/questions/21009516/…【参考方案2】:我正在尝试创建一个查询参数,该参数为我提供 ID 为“457”的产品类别的所有子产品类别。我正在尝试这个:
<?php
$categoria2 ='457';
$taxonomy = 'product_cat';
$orderby = 'name';
$order = 'ASC';
$empty = 0;
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'order' => $order,
'child_of' => $categoria2,
'hide_empty' => $empty,
);
//echo build_query( $args );
?>
我得到的查询是这样的:
taxonomy=product_cat&orderby=name&order=ASC&child_of=457&hide_empty=0
但我在手动查询参数中的氧气中继器上输入它没有成功。
【讨论】:
以上是关于用于 WordPress 的 PHP 片段,用于获取所有产品子类别的主要内容,如果未能解决你的问题,请参考以下文章
PHP 用于function.php文件的Wordpress侧边栏脚本