gpt4 book ai didi

php - WooCommerce Blocks - 向产品网格添加简短的产品描述

转载 作者:行者123 更新时间:2023-12-04 01:33:25 30 4
gpt4 key购买 nike

所以我第一次使用新的 WooCommerce Blocks。在我网站的主页上,我包含了“ProductBestSellers”块和“ProductOnSale”块。这两个块都显示了最畅销产品或销售产品的网格样式布局。
对于我需要的设计,我必须向 html 添加一些包装器,因此我从这里克隆了存储库; WooCommerce Gutenberg Blocks
添加的 html 确实有效,但现在我需要在这些块中包含产品简短描述。我已经编辑 AbstractProductGrid.php 如下;
抽象产品网格.php

/**
* Render a single products.
* Edited: 24/02/2020
*
* Added wrappers to display content with padding borders and other styling
*
* @param int $id Product ID.
* @return string Rendered product output.
*/
public function render_product( $id ) {
$product = wc_get_product( $id );

if ( ! $product ) {
return '';
}

$data = (object) array(
'permalink' => esc_url( $product->get_permalink() ),
'description' => $this->get_description_html( $product ), <--- Add product short description
'image' => $this->get_image_html( $product ),
'title' => $this->get_title_html( $product ),
'rating' => $this->get_rating_html( $product ),
'price' => $this->get_price_html( $product ),
'badge' => $this->get_sale_badge_html( $product ),
'button' => $this->get_button_html( $product ),
);

return apply_filters(
'woocommerce_blocks_product_grid_item_html',
"<li class=\"wc-block-grid__product\">
<div class=\"wc-block-grid__product__wrapper\">
<div class=\"wc-block-grid__product__items\">
<a href=\"{$data->permalink}\" class=\"wc-block-grid__product-link\">
{$data->image}
{$data->title}
</a>
{$data->badge}
{$data->rating}
{$data->description}
<div class=\"wc-block-grid__product__price-wrapper\">
{$data->price}
{$data->button}
</div>
</div>
</div>
</li>",
$data,
$product
);
}

/**
* Get the product short description.
*
* @param \WC_Product $product Product.
* @return string
*/
protected function get_description_html( $product ) {
if ( empty( $this->attributes['contentVisibility']['description'] ) ) {
return '<p class="purple">The short description is empty</p>';
}
return '<div class="wc-block-grid__description">' . $product->get_short_description() ? $product->get_short_description() : wc_trim_string( $product->get_description(), 400 ) . '</div>';
}
上面的代码返回一个空属性,我如何包含新 WooCommerce 块的简短描述?

最佳答案

我在寻找这个问题的答案时发现了这篇文章,我想你可能已经解决了它,但这里有一个建议的解决方案,供任何来这里的人使用。
首先,不建议更改 WooCommerce 或 Blocks-plugin 的核心文件,因为如果您更新插件,您的更改将被覆盖。
更好的方法是利用插件为渲染输出公开一个名为“woocommerce_blocks_product_grid_item_html”的过滤器。
所以如果你把它放在你的functions.php中,你会在产品标题后得到简短的描述:

/**
* Add short description to WooCommerce product blocks
*/
add_filter('woocommerce_blocks_product_grid_item_html', 'add_short_desc_woocommerce_blocks_product_grid_item_html', 10 , 3);
function add_short_desc_woocommerce_blocks_product_grid_item_html($content, $data, $product) {
$short_description = '<div class="wc-block-grid__product-short-description">' . $product->get_short_description() . '</div>';

// This will inject the short description after the first link (assumed: the default product link).
$after_link_pos = strpos($content, "</a>");
$before = substr($content, 0, $after_link_pos + 4);
$after = substr($content, $after_link_pos + 4);

$content = $before . $short_description . $after;

return $content;
}

关于php - WooCommerce Blocks - 向产品网格添加简短的产品描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60377205/

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