从产品存档页面中删除产品描述

时间:2017-10-27 作者:BarrieO

WooCommerce的商店页面基于archive-product.php 文件在此文件中,称为循环:

    <?php woocommerce_product_loop_start(); ?>

            <?php woocommerce_product_subcategories(); ?>

            <?php while ( have_posts() ) : the_post(); ?>

                <?php
                    /**
                     * woocommerce_shop_loop hook.
                     *
                     * @hooked WC_Structured_Data::generate_product_data() - 10
                     */
                    do_action( \'woocommerce_shop_loop\' );
                ?>

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

            <?php endwhile; // end of the loop. ?>
在此循环中,生成产品数据:

public function generate_product_data( $product = null ) {
        if ( ! is_object( $product ) ) {
            global $product;
        }

        if ( ! is_a( $product, \'WC_Product\' ) ) {
            return;
        }

        $shop_name       = get_bloginfo( \'name\' );
        $shop_url        = home_url();
        $currency        = get_woocommerce_currency();
        $markup          = array();
        $markup[\'@type\'] = \'Product\';
        $markup[\'@id\']   = get_permalink( $product->get_id() );
        $markup[\'url\']   = $markup[\'@id\'];
        $markup[\'name\']  = $product->get_name();

        if ( apply_filters( \'woocommerce_structured_data_product_limit\', is_product_taxonomy() || is_shop() ) ) {
            $this->set_data( apply_filters( \'woocommerce_structured_data_product_limited\', $markup, $product ) );
            return;
        }

        if ( \'\' !== $product->get_price() ) {
            $markup_offer = array(
                \'@type\'         => \'Offer\',
                \'priceCurrency\' => $currency,
                \'availability\'  => \'https://schema.org/\' . $stock = ( $product->is_in_stock() ? \'InStock\' : \'OutOfStock\' ),
                \'sku\'           => $product->get_sku(),
                \'image\'         => wp_get_attachment_url( $product->get_image_id() ),
                \'description\'   => $product->get_description(),
                \'seller\'        => array(
                    \'@type\' => \'Organization\',
                    \'name\'  => $shop_name,
                    \'url\'   => $shop_url,
                ),
            );
...
generate_product_data function 要求提供产品描述。

我想调整我的模板或在我的functions.php 文件,以便不再将描述添加到“我的产品存档”页面。但是,它应该添加到我的单一产品页面。&产品存档页;单个产品页使用相同的woocommerce_shop_loop 然而

我应该如何调整模板或向功能文件中添加代码以删除此产品描述?我对我的产品有很长的描述;不希望将这些内容添加到产品归档页面。

3 个回复
最合适的回答,由SO网友:BarrieO 整理而成

解决方案如下the7 template:Solution

如果有人知道如何在functions.php 文件,这样当我的主题更新时,我就不必更新它了,拍吧!

SO网友:Akshat

对于此特定主题,您可以添加

remove_action(\'woocommerce_shop_loop_item_desc\',\'dt_woocommerce_template_loop_product_short_desc\', 15);
在函数中。删除子主题的php操作,dt_woocommerce_template_loop_product_short_desc 此函数添加到woocommerce_shop_loop_item_desc, 通过使用remove\\u操作,它将被删除。

更新:您似乎在init之前删除操作,子主题的函数在父主题之前执行,请尝试

function remove_parent_action() {                                            
    remove_action(\'woocommerce_shop_loop_item_desc\',\'dt_woocommerce_template_loop_product_short_desc\', 15);
}
add_filter(\'init\', \'remove_parent_action\');

SO网友:Shawn W

2021工作方案。在子主题中,将其添加到函数中。php

/**
 * Products Shop Archive Short Description
 *
 * @param  string $string
 * @return string
 */

function woo_archive_desc( $string ) {
    global $post;

// Don\'t display the description on search results page.  

if ( is_search() ) {
    return;
}

// Only run function if on Woo Shop Page

if ( is_post_type_archive( \'product\' ) ) {

    $shop_page = get_post( wc_get_page_id( \'shop\' ) && in_array( absint( get_query_var( \'paged\' ) ), array( 0, 1 ), true ) );
    if ( $shop_page ) {
        $des = $post->post_excerpt;

// do something like empty above var, then echo
     
        echo \'<div class="woocommerce-product-details__short-description"><p>\' . $des . \'</p></div>\';

    }
}
}
add_action( \'woocommerce_after_shop_loop_item_title\', \'woo_archive_desc\', 4, 1 );
最后移动。。。

plugins/woocommerce/single-product/short-description.phpthemes/{yourthemehere}/woocommerce/single-product/short-description.php

更改此代码块添加! is_product() 至条件。

global $post;

$short_description = apply_filters( \'woocommerce_short_description\', $post->post_excerpt );

if ( ! $short_description || ! is_product() ) {
    return;
}

结束

相关推荐

Functions.php中的入队样式

这对我没用functions.php: if( is_page_template( \'template-flat.php\' ) ) { function flatsome_scripts() { wp_enqueue_style( \'flatsome-style\', get_template_directory_uri() .\'/flatash/css/foundation.css\', array(), \'2.1\', \'all\'); }