Wordpress 如何将存档产品用作页面模板上的模板?
这是我第一次在stackoverflow上发表文章。我花了好几天的时间试图自己解决这个问题,在任何我能找到的地方到处寻找,但我已经不知所措,我即将完全放弃。 请帮帮我。 任务: 使用页面模板(page sale.php),我需要显示所有在售产品,并能够按价格(asc和desc)、类别和添加日期对它们进行排序 可能的解决方案: 使用WP_查询(当前情况): 这适用于显示产品,但尝试在我想要添加排序列表时,我也必须进行自定义,我需要/希望正确地执行此操作-即,我不想创建自己的选择选项并使用$\u GET有条件地更改我的查询,这不是我正在寻找的干净解决方案,我知道有更好的方法 我的想法: 使用wc_get_template_part('archive','product'),或者简单地将archive-product.php内容复制/粘贴到我的页面模板中,然后使用wc钩子或编辑模板来更改查询和排序列表以满足我的需要 所以我试过了。使用wc_get_template_part(‘归档’、‘产品’)我尝试了 我还尝试了woocommerce\u-before\u-shop\u-loop和woocommerce\u-shop\u-loop作为挂钩 此外,我还尝试将archive-product.php的内容复制到我的页面模板文件中,即我的page-sale.php是archive-product.php的直接副本。但是现在没有显示任何产品,分类列表也没有显示,但是商店页面工作正常,显示了所有产品的分类列表 其他想法: 不,我不会使用短代码,这需要使用页面模板来完成 最后的想法: 我感到非常失落。我以前与WordPress合作过,但WooCommerce对我来说是全新的。我一直努力想弄清楚这件事。但文档中缺少了这一步,我不理解其中的解释。这太令人沮丧了,我很生气,我想哭 尽管文档很全面,但太糟糕了,我不知道该去哪里找。每次我看到一个问题,看起来像我的,只是从来没有完全满足我的具体需要。我发现所有的答案都是有意义的,我理解它们,我只是缺少了一块拼图 请。帮助。 更新 所以我做了更多的测试。目前,我已经将archive-product.php复制到我自己的模板中,并添加了我自己的查询,该查询正在运行。然而,我发现我的排序列表没有显示的原因可能是因为before_shop_循环不起作用。我试着从这里的答案来解决它,但是没有用。此外,我还发现,但这似乎也是一条死胡同Wordpress 如何将存档产品用作页面模板上的模板?,wordpress,woocommerce,Wordpress,Woocommerce,这是我第一次在stackoverflow上发表文章。我花了好几天的时间试图自己解决这个问题,在任何我能找到的地方到处寻找,但我已经不知所措,我即将完全放弃。 请帮帮我。 任务: 使用页面模板(page sale.php),我需要显示所有在售产品,并能够按价格(asc和desc)、类别和添加日期对它们进行排序 可能的解决方案: 使用WP_查询(当前情况): 这适用于显示产品,但尝试在我想要添加排序列表时,我也必须进行自定义,我需要/希望正确地执行此操作-即,我不想创建自己的选择选项并使用$\u G
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
'meta_query' => array( //only get products on sale
array(
'key' => '_sale_price',
'value' => 0,
'compare' => '>'
)
)
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
add_action('pre_get_posts', 'wc_custom_query');
function wc_custom_query() {
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
'meta_query' => array( //only get products on sale
array(
'key' => '_sale_price',
'value' => 0,
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) : $query->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();
}