Jas*_*ame 4 php wordpress wordpress-theming woocommerce
我在创建自己的自定义 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(); ?>
Run Code Online (Sandbox Code Playgroud)
也许我的错误立刻就显而易见了。
当我浏览代码时,我将突出显示我遇到的但无法找到答案的问题。
从以下行开始:
$display_count = $atts['per_page'];
echo $display_count; // NO value - How do I access this?
Run Code Online (Sandbox Code Playgroud)
据我了解,这些变量 ( $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;
Run Code Online (Sandbox Code Playgroud)
设置页面变量来帮助我跟踪我所在的页面。
$offset = ( $page - 1 ) * $display_count;
echo $offset; // returns 0 - CORRECT;
Run Code Online (Sandbox Code Playgroud)
创建要放入参数中的偏移变量,以便可以知道有多少产品将被偏移,这将在分页中非常方便。
$loop = new WC_Product_Query( $args );
Run Code Online (Sandbox Code Playgroud)
构建与提供的 $args 关联的产品循环。
这是最好的查询处理程序吗?我见过很多其他人,例如:
$loop = new WP_Query( $args );
$loop = wc_get_products( $args );
Run Code Online (Sandbox Code Playgroud)
代码的尾部我只是尝试输出使用尽可能多的 WooCommerce 基本模板结构找到的产品。
编辑:理想情况下,它还会向我展示如何使用 WooCommerce 循环,因为我使用了 WooCommerce 插件中的插件,可以帮助我将产品重新排序为自定义订单。我希望完成的就是这份定制订购的产品清单。
小智 7
循环访问 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>
Run Code Online (Sandbox Code Playgroud)