gpt4 book ai didi

php - 修改 Woocommerce 模板文件以按产品类别显示产品

转载 作者:行者123 更新时间:2023-12-03 08:58:32 29 4
gpt4 key购买 nike

我正在这里抓狂地搜索并尝试修改 WooCommerce 核心文件。

所以,我想做的是修改主题的 woocommerce.php 文件,因为我想按类别在我的商店中显示产品。

到目前为止,我发现在我的主题根文件夹中的 woocommerce.php 文件中有这一行

<?php woocommerce_content(); ?>

显示所有产品。然后,我发现 mytheme/woocommerce/处的文件 content-product.php 正在为每个产品运行,简而言之,该文件包含每个产品的样式和类。换句话说,该文件正在循环内运行。

所以我现在知道我必须修改一些实际调用该文件的函数,并且我想将产品类别传递给该函数,以便我可以显示我想要的产品。

进行一些挖掘后,我发现在 wp-content/plugins/woocommerce/includes/wc-template-functions.php 中有带有以下代码的函数 woocommerce_content()

function woocommerce_content() {

if ( is_singular( 'product' ) ) {

while ( have_posts() ) :
the_post();
wc_get_template_part( 'content', 'single-product' );
endwhile;

} else {
?>

<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>

<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

<?php endif; ?>

<?php do_action( 'woocommerce_archive_description' ); ?>

<?php if ( woocommerce_product_loop() ) : ?>

<?php do_action( 'woocommerce_before_shop_loop' ); ?>

<?php woocommerce_product_loop_start(); ?>

<?php if ( wc_get_loop_prop( 'total' ) ) : ?>
<?php while ( have_posts() ) : ?>
<?php the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; ?>
<?php endif; ?>

<?php woocommerce_product_loop_end(); ?>

<?php do_action( 'woocommerce_after_shop_loop' ); ?>

<?php else : ?>

<?php do_action( 'woocommerce_no_products_found' ); ?>

<?php
endif;

}
}

最后,我认为 wc_get_loop_prop 函数是初始化循环的函数,我正在尝试找到一种方法将参数传递给该函数(例如产品类别 ID),以便我可以调用 woocommerce_content(118),其中 118 是产品类别并按照我想要的方式显示我的产品。

有什么办法可以做到这一点吗?我在这部分卡住了很长时间,似乎找不到解决方案。

最佳答案

解决方案:

最后,我要做的就是简单地创建一个函数

function getProductsByCat($theCat) {
$args = array(
'post_type' => 'product',
'posts_per_page' => 50,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $theCat
)
)
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();

wc_get_template_part( 'content', 'product' );

endwhile;
} else {
return false;
}

return true;
}

并在我网站的任何位置调用它,以按猫 ID 显示产品,例如

<div class="col-md-12"><h4>Special Offers</h4></div>
<?php
if(!getProductsByCat(191)){
//echo "<p>No products available.</p>";
}
?>

我希望这对那些正在尝试做同样事情的人有所帮助。

关于php - 修改 Woocommerce 模板文件以按产品类别显示产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53025380/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com