Вывести более 3 категорий на главной Woocomerce Storefront

nikonlay
На сайте с 11.12.2006
Offline
146
405

Доброго дня всем!

Такой вопрос - в Storefront по умолчанию выводятся 3 картинки категорий на главной. А у меня 4 категории, то есть хотел бы вывести 4.

Как это сделать - на самом деле даже нашел ответ на форумах, но оно у меня почему-=то не работает.

Пишут, что в файле wp-content/themes/storefront/inc/storefront-template-functions.php примерно на 555 строчке есть функция storefront_product_categories( $args ) в ней задается это количество

'limit' => 3,

'columns' => 3,

Соответственно, нужно заменить на свое. Советуют прям там менять.

Но, у меня дочерняя тема, типа по правилам все, поэтому прям там я менять не стал, а скопировал всю функцию от и до:

if ( ! function_exists( 'storefront_product_categories' ) ) {

/**
* Display Product Categories
* Hooked into the `homepage` action in the homepage template
*
* @since 1.0.0
* @param array $args the product section args.
* @return void
*/
function storefront_product_categories( $args ) {

if ( storefront_is_woocommerce_activated() ) {

$args = apply_filters( 'storefront_product_categories_args', array(
'limit' => 3,
'columns' => 3,
'child_categories' => 0,
'orderby' => 'name',
'title' => __( 'Shop by Category', 'storefront' ),
) );

$shortcode_content = storefront_do_shortcode( 'product_categories', apply_filters( 'storefront_product_categories_shortcode_args', array(
'number' => intval( $args['limit'] ),
'columns' => intval( $args['columns'] ),
'orderby' => esc_attr( $args['orderby'] ),
'parent' => esc_attr( $args['child_categories'] ),
) ) );

/**
* Only display the section if the shortcode returns product categories
*/
if ( false !== strpos( $shortcode_content, 'product-category' ) ) {

echo '<section class="storefront-product-section storefront-product-categories" aria-label="' . esc_attr__( 'Product Categories', 'storefront' ) . '">';

do_action( 'storefront_homepage_before_product_categories' );

echo '<h2 class="section-title">' . wp_kses_post( $args['title'] ) . '</h2>';

do_action( 'storefront_homepage_after_product_categories_title' );

echo $shortcode_content;

do_action( 'storefront_homepage_after_product_categories' );

echo '</section>';

}
}
}
}

Вставил ее в functions.php своей дочерней темы, и уже там изменил 3 на 4.

Но - ничего не произошло, по-прежнему 3 картинки категорий.

Почему так может быть?

Может, я вставил как-то не так, может не всю функцию а только часть нужно было скопировать, или еще что?

会員限定プレゼントにご参加いただきありがとうございます!
IL
На сайте с 20.04.2007
Offline
412
#1
nikonlay:
Но, у меня дочерняя тема, типа по правилам все,

Так может функция определена в дочерней теме.. и

if ( ! function_exists( 'storefront_product_categories' ) ) {

этот блок и не выполняется вовсе...

Поместите после открывающейся скобки, чтобы проверить.. к примеру что-то вроде:

die('555');
Gerga
На сайте с 02.08.2015
Offline
89
#2

nikonlay, возможно на главной при вызове функции устанавливается limit = 3, поэтому в функции ваш limit = 4 игнорируется т.к. вы устанавливаете параметр по умолчанию. Вам нужно найти то место в коде шаблона, где вы хотите вывести 4 категории и поменять на нечто подобное:


storefront_product_categories(array(
'limit' => 4,
));

естественно в дочерней теме.

---------- Добавлено 01.08.2019 в 20:33 ----------

А возможно у вас есть настройки в админке, можете там поискать.

S
На сайте с 30.09.2016
Offline
459
#3

Кэш забыли почистить. ;)

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
nikonlay
На сайте с 11.12.2006
Offline
146
#4

ivan-lev, вы оказались правы!

Дырявая голова, сам ведь уже определял эту функцию в своей дочерней теме, просто давно это было, около года назад, забыл про это.

Gerga, настройки в админке я, конечно, поискал. Было бы все можно делать через настройки в админке - то-то жизнь бы пошла, и программирование не надо было бы учить )

Sitealert, кеш чистил, ну через режим инкогнито смотрел по крайней мере ) Но кстати изменения в functions.php обычно и так видны, кэш чистить приходится обычно после css и картинок изменения

S
На сайте с 30.09.2016
Offline
459
#5
nikonlay:
кэш чистить приходится обычно после css и картинок изменения

Я не про кэш браузера, а про кеширующие плагины вордпресса. ;)

Gerga
На сайте с 02.08.2015
Offline
89
#6
nikonlay:
Gerga, настройки в админке я, конечно, поискал. Было бы все можно делать через настройки в админке - то-то жизнь бы пошла, и программирование не надо было бы учить )

Давайте тогда учить как правильнее :) .

Более правильный вариант - это использование фильтра "storefront_product_categories_args".

Пример:


/**
* Функция применяется к фильтру storefront_product_categories_args,
* смотреть storefront_product_categories.
**/
function storefront_child_filter_product_categories_args($args) {
if (isset($args['limit'])) {
$args['limit'] = 4;
}

return $args;
}
add_filter('storefront_product_categories_args', 'storefront_child_filter_product_categories_args');

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий