我在创建自己的自定义WooCommerce产品循环时遇到困难。
一路上, 我遇到了一些问题, 如果可以回答, 这些问题将非常有帮助。
我目前正在使用以下代码块:
ARCHIVE-PRODUCT.PHP(进入子主题->
woocommerce / archive-product.php):
<
?php
/**
* @see https://docs.woocommerce.com/document/template-structure/
* @package WooCommerce/Templates
* @version 3.4.0
*/defined( 'ABSPATH' ) || exit;
get_header();
$display_count = $atts['per_page'];
echo $display_count;
// NO value - How do I access this?
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo $page;
// returns 1 - CORRECT;
$offset = ( $page - 1 ) * $display_count;
echo $offset;
// returns 0 - CORRECT;
$args = array(
'post_type'=>
'product', 'post_status'=>
'publish', 'posts_per_page'=>
$atts['per_page'], 'page'=>
$page, 'offset'=>
$offset, 'orderby'=>
$atts['orderby'], 'order'=>
$atts['order']
);
?>
<
?php
$loop = new WC_Product_Query( $args );
if ( $loop->
have_posts() ) :// do_action( 'woocommerce_before_shop_loop' );
woocommerce_product_loop_start();
?>
<
div id="product-list">
<
?php
while ( $loop->
have_posts() ) :$loop->
the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
?>
<
/div>
<
?php
woocommerce_product_loop_end();
do_action( 'woocommerce_after_shop_loop' );
else :do_action( 'woocommerce_no_products_found' );
endif;
wp_reset_postdata();
do_action( 'woocommerce_after_main_content' );
do_action( 'woocommerce_sidebar' );
get_footer();
?>
也许我的错误立即显而易见。
当我遍历代码时, 我将突出显示我遇到的无法找到答案的问题。
从这行开始:
$display_count = $atts['per_page'];
echo $display_count;
// NO value - How do I access this?
据我了解, 这些变量($ atts [‘ per_page’ ], $ atts [‘ order_by’ ], $ atts [‘ order’ ])包含在以下位置:/includes/class-wc-shortcodes.php。
但是, 除非我弄错了, 否则我只能看到为单个产品页面设置的此属性。
我可以使用$ atts []中设置的变量吗?这些变量也将在$ args数组的页面下方使用
如何设置它们以便可以使用它们?
这些值在哪里存储和更改?
将自定义AJAX分页脚本写入functions.php文件时, 这些变量也可以在此处使用吗?如果没有, 我该如何设置?
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo $page;
// returns 1 - CORRECT;
设置页面变量以帮助我跟踪当前页面。
$offset = ( $page - 1 ) * $display_count;
echo $offset;
// returns 0 - CORRECT;
创建offset变量以放入args中, 以便可以知道将要偏移多少个产品, 将在分页中非常方便。
$loop = new WC_Product_Query( $args );
构建与提供的$ args相关的产品循环。
这是最好的查询处理程序吗?我见过很多其他人, 例如:
$loop = new WP_Query( $args );
$loop = new wc_get_products( $args );
我只是想输出使用尽可能多的WooCommerce基本模板结构找到的产品的代码的末尾。
编辑:理想情况下, 它还将向我展示如何利用WooCommerce循环, 因为我在WooCommerce插件上使用了插件, 可以帮助我将产品重新订购为自定义订单。这是我希望了解的定制订购产品列表。
#1【如何在WooCommerce中创建有效的自定义产品查询()】基本查询遍历WooCommerce产品
<
ul class="products">
<
?php
$args = array(
'post_type'=>
'product', 'post_status' =>
'publish', 'posts_per_page' =>
-1, // -1 will get all the product. Specify positive integer value to get the number given number of product
);
$the_query = new WP_Query( $args );
if ( $the_query->
have_posts() ) {
while ( $the_query->
have_posts() ) : $the_query->
the_post();
// Get default product template
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
?>
<
/ul>
推荐阅读
- 如何创建自定义栏目(如邮政,媒体)()
- k8s Nginx-ingress配置https
- 791_AUTOSAR_RS_TimingExtensions1_时序分析扩展需求1
- Python数据分析基础-2Python标量类型
- 快速定位MySQL锁等待问题
- oeasy教您玩转vim - 47 - # 使用标记
- 四千字从源码分析ConcurrentHashMap的底层原理(JDK1.8)
- MYSQL的安装
- 项管行知04--项目章程