Изменение шорткода WooCommerce [продукты] - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужно изменить шорткод [products ids = ...] WooCommerce. Я хочу поместить одну часть "div" при возврате продукта с каждым другим активом, который первоначально был возвращен. Если быть точным c, у меня есть таблица, в которой хранятся идентификаторы продуктов и их «баллы». Я хочу показать оценку конкретного продукта, когда использую шорткод [products]. Я знаю, как использовать $ wpdb et c, но я не знаю, как изменить шорткод WooCommerce / не смог его найти.

Примечание: я знаю, как написать свой собственный шорткод, но я также хотите добавить эти оценки на страницы архива продукта, которые изначально были созданы WooCommerce. Есть ли простой способ сделать это без потери кода при обновлении плагина? Спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете создать свой собственный короткий код, который использует [products] короткий код WooCommerce.

Что-то вроде:

add_shortcode( 'mc_products', 'mc_products_shortcode' );

/**
 * Add a custom 'mc_products' shortcode
 *
 * @param array $atts  Shortcode attributes
 * @return string
 */
function mc_products_shortcode( $atts) {
  // Pass whichever attributes you need to the 'products' shortcode
  return do_shortcode( "[products ids={$atts['ids']}]" );
}

Тогда вместо [products ids=…] вы будете использовать [mc_products ids=…]

Если по какой-то причине вам необходимо переопределить существующий шорткод 'products', вы можете удалить его, а затем повторно добавить его с вашей собственной реализацией.

Это будет выглядеть так:

remove_shortcode( 'products' );
add_shortcode( 'products', 'mc_products_shortcode' );

/**
 * Replace the existing 'product' shortcode with our own implementation
 *
 * @param array $atts  Shortcode attributes
 * @return string
 */
function mc_products_shortcode( $atts ) {
  // Add your own implementation of the 'products' shortcode
}

Отказ от ответственности: Я не проверял этот код, но надеюсь, что вы поняли.

...