Добавить атрибут продукта в блоки Woocommerce в Гутенберге - PullRequest
3 голосов
/ 08 апреля 2020

РЕДАКТИРОВАТЬ I: Я нашел файл, в котором старый плагин Woocommerce Blocks устанавливает блоки: https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/master/src/BlockTypes/FeaturedCategory.php Но где он находится в библиотеке Woocommerce?

EDIT II: Вопрос в кратко:

Как настроить блоки Woocommerce для отображения большего количества данных, чем встроенная функциональность?

------------- background ------------

Если вы ищете для добавления пользовательских атрибутов для Woocommerce Блокирует множество примеров WordPress для этого.

Например, this , где указан ответ, что вы можете добавлять атрибуты, используя blocks.registerBlockType. Но как это сделать для блоков Woocommerce?

Я хочу добавить поле данных к выводу HTML. Поле данных должно затем вызвать атрибут продукта и показать, существует ли он.

Поэтому, когда вы используете блоки Woocommerce на первой странице - например, размер будет показан под кнопкой «Добавить в корзину». - как на картинке.

enter image description here

Как вы, возможно, знаете, функциональность отображения / скрытия цены, кнопка «добавить в корзину» , обзоры уже есть, когда вы выбираете Woocommerce Block на сайте редактирования.

Но я не нашел место, где создается эта функциональность.

Это также было бы очень полезно - если бы вы могли показать мне , где в библиотеке Woocommerce Github блоки создаются. Может быть, я смогу понять, как их фильтровать и добавить функциональность

Я знаю - на основе курса Удеми - как создать собственный плагин и создать новый тип блога, сохранить и редактировать.

Но мне нужно выяснить, что такое пространство имен Woocommerce, как они создают свои блоки и как называются их данные. Справочник разработчика Woocommerce ничего не говорит об этом - не то, что я нашел.

Я искал inte rnet уже три дня, и я просто не понимаю, что могу ' Кажется, на этом НИЧЕГО не найдено. Никто больше не хочет настраивать эту функциональность в Woocommerce. Я знаю, что это новая функция (блоки) в ядре, но все же.

Мне просто нужно указать в правильном направлении.

1 Ответ

2 голосов
/ 16 апреля 2020

Мне не совсем понятно, о чем вы спрашиваете. Вы часто ссылаетесь на блоки Gutenberg, но ссылаетесь на репозиторий WooCommerce, в котором нет блоков Gutenberg.

Но если я вас правильно понимаю, вы ищете шаблон PHP, который контролирует продукты , Вы можете найти в content-product.php

Вы увидите множество звонков на do_action, который является ядром для перехватчиков WordPress, используемых в плагине development .

<li <?php wc_product_class( '', $product ); ?>>
    <?php
    /**
     * Hook: woocommerce_before_shop_loop_item.
     *
     * @hooked woocommerce_template_loop_product_link_open - 10
     */
    do_action( 'woocommerce_before_shop_loop_item' );

    /**
     * Hook: woocommerce_before_shop_loop_item_title.
     *
     * @hooked woocommerce_show_product_loop_sale_flash - 10
     * @hooked woocommerce_template_loop_product_thumbnail - 10
     */
    do_action( 'woocommerce_before_shop_loop_item_title' );

    /**
     * Hook: woocommerce_shop_loop_item_title.
     *
     * @hooked woocommerce_template_loop_product_title - 10
     */
    do_action( 'woocommerce_shop_loop_item_title' );

    /**
     * Hook: woocommerce_after_shop_loop_item_title.
     *
     * @hooked woocommerce_template_loop_rating - 5
     * @hooked woocommerce_template_loop_price - 10
     */
    do_action( 'woocommerce_after_shop_loop_item_title' );

    /**
     * Hook: woocommerce_after_shop_loop_item.
     *
     * @hooked woocommerce_template_loop_product_link_close - 5
     * @hooked woocommerce_template_loop_add_to_cart - 10
     */
    do_action( 'woocommerce_after_shop_loop_item' );
    ?>
</li>

Если вы выполните поиск хуков действий, определенных в content-product.php, вы найдете их, определенные в wc-template-hooks.php. Хуки - это именованные действия, к которым добавляются функции. Например, если вы посмотрите на действие woocommerce_after_shop_loop_item, то обнаружите, что к нему присоединены две функции.

add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );

Функции woocommerce_template_loop_product_link_close и woocommerce_template_loop_add_to_cart определены в wc-template-functions.php

Вы можете создать совершенно новый файл content-product.php в своей теме, создав файл в yourtheme/woocommerce/content-product.php, однако при этом вы потеряете большую часть встроенной мощности и совместимости WooCommerce.

Лучше было бы удалить, а затем добавить новые действия в хук woocommerce_after_shop_loop_item. Например, woocommerce_template_loop_product_link_close в настоящее время определяется как:

function woocommerce_template_loop_product_link_close() {
    echo '</a>';
}

Вы можете перезаписать это, выполнив это в файле functions.php:

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );

function custom_template_loop_product_link_close() {
    echo 'Hello world!</a>';
}
add_action( 'woocommerce_after_shop_loop_item', 'custom_template_loop_product_link_close', 5 );

Надеюсь, это поможет.

...