我正在使用归档产品构建自定义类别归档模板。php
作为基础。我需要做的是使用产品类别的ID(在Woocommerce中为product\u cat
)仅显示某些类别的产品。但是我想使用wc\u get\u products
而不是WP\u查询
post循环,请注意:https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
“wc_get_products和wc_Product_Query提供了一种检索产品的标准方法,这些产品可以安全使用,并且不会因未来WooCommerce版本中的数据库更改而中断。在将来的WooCommerce版本中,随着数据移向自定义表以获得更好的性能,生成自定义WP_查询或数据库查询可能会中断代码。”
我复制了存档产品。php
将其添加到my child主题中的woocommerce文件夹中,并将其重命名为自定义类别存档。php,它的头是
/*
Template Name: Custom Category Archive Template
*/
因此,我可以选择它作为页面编辑器中的页面模板。
这是新模板自定义类别存档中的原始Woocommerce产品循环。php
:
if ( woocommerce_product_loop() ) {
/**
* Hook: woocommerce_before_shop_loop.
*
* @hooked woocommerce_output_all_notices - 10
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
if ( wc_get_loop_prop( 'total' ) ) {
while ( have_posts() ) {
the_post();
/**
* Hook: woocommerce_shop_loop.
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
}
}
woocommerce_product_loop_end();
如何使用类别ID修改循环以仅包括产品类别(product\u cat
)中的产品?这就是新的WP_查询post循环仅包括产品类别123457899
中的产品的方式:
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => '-1',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'terms' => array('12,345,7899'), // including categories by ID
'operator' => 'IN',
)
如何在我的自定义类别存档中的
模板是否仅显示这三个产品类别中的产品?wc\u get\u loop\u prop('total')
发布产品循环中包括产品类别,如12345、7899
。php
你应该试着像-
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => '-1',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'terms' => array(12,345,7899), // including categories by ID
'operator' => 'IN',
)
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
print the_title();
the_excerpt();
endwhile;
wp_reset_postdata();
参考此大纲https://cfxdesign.com/create-a-custom-woocommerce-product-loop-the-right-way/,这是使用wc\u get\u产品的类别存档的基本循环:
defined( 'ABSPATH' ) || exit;
get_header( 'shop' );
do_action( 'woocommerce_before_main_content' );
?>
<?php
if(!function_exists('wc_get_products')) {
return;
}
$cat_terms = get_field('add_categories_custom_template', $term->term_id);
$ordering = WC()->query->get_catalog_ordering_args();
$ordering['orderby'] = array_shift(explode(' ', $ordering['orderby']));
$ordering['orderby'] = stristr($ordering['orderby'], 'price') ? 'meta_value_num' : $ordering['orderby'];
$cat_products = wc_get_products(array(
'stock_status' => 'instock',
'visibility' => 'visible',
'status' => 'publish',
'limit' => -1,
'paginate' => true,
'return' => 'ids',
'orderby' => $ordering['orderby'],
'order' => $ordering['order'],
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => array('123,45,6789'),
'operator' => 'IN',
)
)
));
wc_set_loop_prop('total', $cat_products->total);
if($cat_products) {
do_action('woocommerce_before_shop_loop');
echo '<div id="container">';
foreach($cat_products->products as $cat_product) {
$post_object = get_post($cat_product);
setup_postdata($GLOBALS['post'] =& $post_object);
echo '<div '; wc_product_class( ' ', $product ); echo '>';
do_action( 'woocommerce_before_shop_loop_item' );
do_action( 'woocommerce_before_shop_loop_item_title' );
do_action( 'woocommerce_shop_loop_item_title' );
do_action( 'woocommerce_after_shop_loop_item_title' );
do_action( 'woocommerce_after_shop_loop_item' );
echo '</div>';
}
wp_reset_postdata();
echo '</div>';
do_action('woocommerce_after_shop_loop');
} else {
do_action('woocommerce_no_products_found');
}
do_action( 'woocommerce_after_main_content' );
问题内容: 我有一个dict包含大量条目的条目。我只对其中几个感兴趣。有没有一种简单的方法可以将其他所有元素都修剪掉? 问题答案: 构建一个新的字典: 使用字典理解。 如果使用缺少它们的版本(例如,Python 2.6和更早版本),请使其成为。一样,尽管丑陋。 请注意,这与jnnnnn的版本不同,对于任何大小的,都具有稳定的性能(仅取决于your_keys的数量)。在速度和内存方面。由于这是一个生
我为我的AAR库做了C#绑定,但是扩展支持片段的片段不包括在绑定中。另外,返回类型为支持片段的其他类的方法也不包括在内。 我的继承层次结构:ScreenAFragment(公共)->PermissionsRequesterFragment(公共抽象)->BaseFragment(公共抽象)->Fragment(Android.support.v4.app包) 有人能告诉我这种行为的原因,并告诉我如
我这里有这个html 我想检查span类是否包含值2013。我应该如何编写xpath? 这些是我到目前为止尝试过的,根据Firepath,它们要么无效,要么没有匹配的节点。
问题内容: 作为测试的一部分,该系统应该确定用于打开网站的设备是移动设备还是普通台式机。 我不断收到错误: “ InvalidSelectorError:无法使用xpath表达式// * [包含(@class,is-mobile … 萤火虫的属性: 我的测试: 有人可以告诉我正确的XPath应该是什么吗? 问题答案: 您似乎缺少右括号和右括号: 更改此: 变成这个: 附带说明一下,请考虑到此代码还
问题内容: 在Python中,如何检查字符串是否仅包含某些字符? 我需要检查仅包含a..z,0..9和的字符串。(句号),没有其他字符。 我可以遍历每个字符并检查字符是a..z还是0..9或。但这会很慢。 我现在不清楚如何使用正则表达式进行操作。 这个对吗?您可以提出更简单的正则表达式还是更有效的方法? 问题答案: 决赛(?) 答案,包装在函数中,带有注释的交互式会话: 注意:在此答案中还有一个比
你好,我看到的日志信息只在某些类,不知道在哪里看。是我的原木模式搞错了还是?这是我的log4j配置,我将它与sfl4j一起使用: null 我创建的记录器是这样的,类字段: 和日志记录,如: 有什么想法吗? 更新 根据Petar Minchev的回答改为信息,但我仍然没有得到任何东西。 更新II 现在,在添加了一些依赖项之后,它可以在一些类上工作(仍然不能在其他一些类上工作)。有一些实现runna