Хочу получить текст для карточки товара, а конкретно написать регулярку для замены определенного контента,но не могу получить сам контент пишу следующеее в functions.php
add_filter( 'woocommerce_single_product_summary','woocommerce_template_single_excerpt', 'woo_excerpt', 20);
function woo_excerpt($content){
echo"<!--.$content."-—>";//пусто
return $content;
}
Функция add_filter записана неправильно. В ней первый параметр - название хука, второй - имя пользовательской функции, третий - приоритет, четвертый - число передаваемых параметров в пользовательскую функцию.
И вообще, это не фильтр, а action. Надо так:
add_action( 'woocommerce_single_product_summary', 'woo_excerpt', 10, 2 );
function woo_excerpt( $array, $int ) {
var_dump($array);
var_dump($int);
};
Но вызов action не даёт возможности изменить текст краткого описания товара. Для этого есть фильтр woocommerce_short_description:
add_filter( 'woocommerce_short_description', 'filter_woocommerce_short_description', 10, 1 );
function filter_woocommerce_short_description( $post_post_excerpt ) {
// Применяйте свою регулярку к $post_post_excerpt здесь
return $post_post_excerpt;
};
И хотя в вопросе написано excerpt (краткое описание товара), и код выше именно для него, но я полагаю, что есть желание исправить полное описание товара. А оно выводится во вкладках. Фильтр для вкладок:
add_filter( 'woocommerce_product_tabs', 'filter_woocommerce_product_tabs', 10, 1 );
function filter_woocommerce_product_tabs( $woocommerce_default_product_tabs ) {
// учтите, что $woocommerce_default_product_tabs это массив
return $woocommerce_default_product_tabs;
};
Из комментариев автора - вот что выводит var_dump($woocommerce_default_product_tabs):
Получается, что в массиве только указатели на обработчики табов.
Смотрим текст функции woocommerce_product_description_tab в файле wp-content/plugins/woocommerce/includes/wc-template-functions.php:
if ( ! function_exists( 'woocommerce_product_description_tab' ) ) {
function woocommerce_product_description_tab() {
wc_get_template( 'single-product/tabs/description.php' );
}
}
Видно, что эту функцию можно перекрыть своей, но лучше всё-таки использовать шаблон wp-content/plugins/woocommerce/templates/single-product/tabs/description.php
. Его надо скопировать в папку своей дочерней темы wp-content/themes/yourtheme/woocommerce/single-product/tabs/description.php
и поправить.
Но можно поступить ещё проще, если нужно изменить только описание товара. Видим, что для вывода самого описания в description.php используется the_content(); Это стандартная функция WordPress, к которой можно применить фильтр в functions.php:
add_filter( 'the_content', 'filter_content' );
function filter_content( $content ) {
// Фильтр...
return $content;
}
Проблема тут ровно одна - через этот фильтр полетят как описания всех товаров, так и контент страниц, записей и т.д. Если фильтр таков, что сработает только на товарах - ок. Но если отличить контент товара от записи сложно, то лучше поправить последнюю строку в description.php:
<?php // the_content(); ?>
<?php $content = get_the_content();
// фильтр...
echo $content;
?>
Виртуальный выделенный сервер (VDS) становится отличным выбором
День добрый! На C++ считываю данные из файлаВ конце имею string, которую мне надо представить в виде const char*, для чего использую
Проблема вот в чём, мне необходимо создать двусвязный кольцевой список используя контейнер listДвусвязный он по умолчанию, а вот кольцевая...
Здравствуйте! В первый раз столкнулся с такой конструкцией, как она называется и почему не работает: