我正在尝试插入WooCommerce元素,以将特定类别的“产品”(课程)显示到页面中。
我还必须隐藏这个特定类别的这些产品,它的工作如预期。我只是添加了一个过滤器内functions.php和它是:
/*
* Exclude "packages" category from "Archive Products" on page 811
* Ref. URL: https://docs.woocommerce.com/document/exclude-a-category-from-the-shop-page/
*/
function exclude_category_archive_products( $q ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'packages' ),
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
if( $current_post_id != "811" ) {
add_filter( 'woocommerce_product_query', 'exclude_category_archive_products' );
}
/* END Exclude "packages" category from "Archive Products" on page 811 */
我一直在寻找方法来达到相反的效果,但我没有找到任何“从今年或接近”。我尝试使用“IN”或“=”操作符,但它不工作(它显示所有内容):
/*
* Display "packages" category only
*/
function show_only_category_in_page( $q ) {
var_dump("It reaches the function");
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'packages' ),
'operator' => '='
);
$q->set( 'tax_query', $tax_query );
}
if( $current_post_id == "811" ) {
var_dump("It reaches the page");
add_filter( 'woocommerce_product_query', 'show_only_category_in_page' );
}
/* END Display "packages" category only */
前面的代码只写了string(23) "It gets reachs the page"
,我做错了什么?
2条答案
按热度按时间lsmepo6l1#
你应该试试这个,你可以从一个特定的类别的产品
解决方案1:
其中1,2,3表示类别ID。
溶液2
创建自定义页面并显示特定类别的产品:
步骤:
1.转到当前主题创建一个类似course-tpl. php的新页面
1.复制并粘贴上述代码到您的自定义页面course-tpl.php,并更改/替换类别slug“clothing”为“your category slug”,然后保存。
1.打开 Jmeter 板-转到页面和“添加新”页面,输入页面标题,分配“课程模板”并保存
1.打开新页面
1.相应地更新/管理页面CSS和HTML。
yhived7q2#
获取特定产品类别的产品(按类别slug或id):
我想更新Rajeev Singh的解决方案,特别是用于显示特定产品类别的产品的解决方案。
问题:
根据Woocommerce文档**WP_Query()或get_posts()**不应使用:
wc_get_products和WC_Product_Query提供了检索产品的标准方法,使用安全,不会因未来WooCommerce版本中的数据库更改而中断。构建自定义WP_Queries或数据库查询可能会在WooCommerce的未来版本中中断您的代码,因为数据会移向自定义表格以获得更好的性能。这是插件和主题开发人员检索多个产品的最佳方法。get_products和WC_Product_Query类似于WordPress的get_posts和WP_Query,就像它们一样,传入一个参数数组来定义搜索条件。
WooCommerce Docs
解决方案1 -按类别获取产品slug
如果您想在特定类别存档页面上使用产品类别的ID,请检查解决方案2。如何从类别存档页面模板中获取当前类别的ID不是此解决方案的一部分。
解决方案2 -按类别ID获取产品:
解决方案-显示产品
(测试和工作与WordPress 5.9.3和WooCommerce 6.4.1.)
Credit: @Christian Lescuyer