在单个产品页面上增加相关产品(woocommerce)

Posted

技术标签:

【中文标题】在单个产品页面上增加相关产品(woocommerce)【英文标题】:Increase related products on single product page (woocommerce) 【发布时间】:2014-07-07 16:00:30 【问题描述】:

我正在一个运行 wordpress 的网站上做一些工作——木星主题风格的 woocommerce。

问题是我已经向开发人员寻求帮助,但已经有一段时间了。

我正在寻找一种方法将底部的“相关产品”从 2 个增加到 4 个,以便填写模板。

在related.php 中,我以为我找到了更改相关产品数量的值,但我错了。它什么都不做,这对我来说本身就很奇怪。

 <?php
/**
 * Related Products
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

global $product, $woocommerce_loop;

$related = $product->get_related( $posts_per_page );

if ( sizeof( $related ) == 0 ) return;

$args = apply_filters( 'woocommerce_related_products_args', array(
    'post_type'            => 'product',
    'ignore_sticky_posts'  => 1,
        'no_found_rows'        => 1,
    'posts_per_page'       => $posts_per_page,
    'orderby'              => $orderby,
    'post__in'             => $related,
    'post__not_in'         => array( $product->id )
) );

$products = new WP_Query( $args );

$woocommerce_loop['columns'] = $columns;

if ( $products->have_posts() ) : ?>

    <div class="related products">

        <h2><?php _e( 'Related Products', 'woocommerce' ); ?></h2>

        <?php woocommerce_product_loop_start(); ?>

            <?php while ( $products->have_posts() ) : $products->the_post(); ?>

                <?php wc_get_template_part( 'content', 'product' ); ?>

            <?php endwhile; // end of the loop. ?>

        <?php woocommerce_product_loop_end(); ?>

    </div>

<?php endif;

wp_reset_postdata();

<?php
/**
 * Related Products
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     1.6.4
 */

 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

 global $product, $woocommerce_loop;

 $related = $product->get_related( 6 );

 if ( sizeof( $related ) == 0 ) return;

 $args = apply_filters( 'woocommerce_related_products_args', array(
    'post_type'            => 'product',
    'ignore_sticky_posts'  => 1,
    'no_found_rows'        => 1,
    'posts_per_page'       => 6,
    'orderby'              => $orderby,
    'post__in'             => $related,
    'post__not_in'         => array( $product->id )
 ) );

 $products = new WP_Query( $args );

 $woocommerce_loop['columns'] = 4;

 if ( $products->have_posts() ) : ?>

    <div class="related products">

        <h2><?php _e( 'Related Products', 'woocommerce' ); ?></h2>

        <?php woocommerce_product_loop_start(); ?>

            <?php while ( $products->have_posts() ) : $products->the_post(); ?>

                <?php wc_get_template_part( 'content', 'product' ); ?>

            <?php endwhile; // end of the loop. ?>

        <?php woocommerce_product_loop_end(); ?>

    </div>

      <?php endif;

 wp_reset_postdata();

所以我现在真的很困惑,希望任何人有关于如何改变它的建议或解决方案。

【问题讨论】:

【参考方案1】:

您需要重新定义 WooCommerce 函数以覆盖它包含的默认值:

在您的functions.php 中添加:

// Redefine woocommerce_output_related_products()
function woocommerce_output_related_products() 
     woocommerce_related_products(4,2); // Display 4 products in rows of 2

您需要编辑括号中的数字以满足您的要求。

【讨论】:

太棒了,我之前在网上找到它后尝试过。但是粘贴的位置也很关键不是吗?因为当我将它粘贴在我的主题 functions.php 的开头时,它并没有为我做任何事情。但是当粘贴到最后它起作用时,我认为这与我在调用函数之前试图覆盖的事实有关? 它不应该有所作为,但是,正如你所说,如果你在其他地方定义了这个函数,然后你在已经定义的函数之前的某个地方重新定义它,是的,它赢了没有效果。很高兴你成功了。

以上是关于在单个产品页面上增加相关产品(woocommerce)的主要内容,如果未能解决你的问题,请参考以下文章

单个产品页面上的 Woocommerce 钩子溢出

在 WooCommerce 的单个产品页面上隐藏某些产品的产品库存

在 Woocommerce 的单个产品页面中添加产品备注字段

如何按ID排序不随机化Woocommerce的相关产品

在 WooCommerce 单一产品页面上为特定产品添加自定义内容

在Woocommerce单个产品页面中显示高于产品价格的自定义字段