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
然而
我应该如何调整模板或向功能文件中添加代码以删除此产品描述?我对我的产品有很长的描述;不希望将这些内容添加到产品归档页面。
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.php
到themes/{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;
}