将产品属性添加到WooCommerce在古登堡的区块

时间:2020-04-05 作者:Peter Højlund Andersen

编辑:Github上的Woocommerce代码中的Woocommerce块位于哪里?答案:

下面的答案提到Woocommerce块是一个包,因此它不会显示在Github上的Woocommerce库中,而是从以下位置调用:https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/master/assets/js/blocks

例如this, 答案指出,您可以使用blocks.registerBlockType. 但如何为Woocommerce街区做到这一点?

我希望能够将数据字段添加到HTML输出中。然后,数据字段应调用产品属性并显示(如果存在)。

So when you use the Woocommerce Blocks on your front page - for example the size will be shown underneath the add to cart button - as in the image.

enter image description here

正如您可能知道的,当您在编辑网站上选择Woocommerce块时,显示/隐藏价格、添加到购物车按钮、评论已经存在的功能。

但我还没有找到创建此功能的地方。

如果你能给我看的话,这也会是一个很大的帮助where in the Woocommerce Github library 正在创建块。也许我可以自己弄清楚如何过滤它们并添加功能性

基于Udemy课程,我知道如何创建自定义插件并创建新的博客类型、保存和编辑。

但我需要弄清楚Woocommerce名称空间是什么,它们是如何创建块的,以及它们的数据是如何调用的。《Woocommerce开发人员手册》并没有提及这一点,也没有提及我的发现。

我已经在互联网上搜索了三天了,但我不明白我似乎在这上面找不到任何东西。其他人都不想在Woocommerce中自定义此功能。我知道这是一个新的功能(块)的核心,但仍然。

我只需要被指向正确的方向。

2 个回复
SO网友:helgatheviking

随着块越来越多地向前端渲染。。。我只能找到一个过滤器,用于通过PHP修改块的输出。woocommerce_blocks_product_grid_item_html 我甚至不确定这是否适用于所有产品块,这些产品块可能/可能不会使用与其他产品列表块相同的代码。

这里有一个例子,1。删除链接和2。添加产品的简短描述:

/**
 * Add short descriptions
 *
 * @param string $html
 * @param object $data
 * @param WC_Product $product
 * @return string
 */
function kia_blocks_product_grid_item_html( $html, $data, $product ) {
    $short_description = $product->get_short_description() ? \'<div class="wp-block-grid__short-description">\' . wc_format_content( $product->get_short_description() ) . \' </div>\' : \'\';

    return 
        "<li class=\\"wc-block-grid__product\\">
            {$data->image}
            {$data->title}
            {$data->badge}
            {$data->price}
            {$data->rating}" .

            $short_description

            . "{$data->button}
        </li>";
}
add_filter( \'woocommerce_blocks_product_grid_item_html\', \'kia_blocks_product_grid_item_html\', 10, 3 );

SO网友:Himad

Woocommerce街区位于woocommerce/packages/woocommerce-blocks/assets/js/blocks.

woocommerce如何注册畅销产品区块的示例:

registerBlockType( \'woocommerce/product-best-sellers\', {
    ...
} );
正如您所看到的,名称空间只是woocommerce.

我不明白您想用自定义数据字段实现什么。你能更好地解释一下吗?

相关推荐