Отображение случайных категорий на главной странице (Поиск и редактирование функций темы)

8

В настоящее время я нахожусь в стадии альфа редактирования дочерней темы для темы Wordpress. У меня есть опыт программирования и некоторый опыт управления WordPress, но нет непосредственного опыта редактирования кода, связанного с WordPress. Сейчас он отображает первые три категории в алфавитном порядке.

Что я пытаюсь сделать: вместо того, чтобы отображать первые три категории в алфавитном порядке, я хотел бы отобразить 3 случайные категории с более чем x количеством товаров.

Я столкнулся со следующими препятствиями / вопросами, мешающими мне продолжить.

  1. Какой механизм / функция контролирует выбор этих категорий? (TheirCode)
  2. Это тема или что-то в базовой системе WordPress?
  3. Какая другая информация будет иметь отношение к этому изменению?
  4. Какая информация будет полезна из Firefox Dev Bar?
  5. Как мне найти «Их код», чтобы я мог заменить его на «Мой код»?

Настоящий вопрос здесь заключается в следующем: как мне найти «OurCode», который отвечает за этот выбор, используя такие инструменты, как Firefox Dev Bar и фактический источник?

Этот вопрос не о WooCommerce (плагин). Я ищу способ найти функцию в теме, разработанной WooCommerce (компания), или в любой другой теме.

Тема с открытым исходным кодом: WooCommerce Storefront

Т. Томас
источник
2
Найдите тег с определенными категориями или категориями, используя Firefox Developer Inspector. Затем найдите этот класс или идентификатор в исходных файлах темы. Вы должны найти какую-то функцию отображения категорий. Перезаписать функцию или использовать фильтр функций для замены категорий.
kierzniak

Ответы:

11

Настоящий вопрос здесь заключается в следующем: как мне найти «их код», который отвечает за этот выбор, используя такие инструменты, как панель разработки Firefox и фактический источник?

Если вы ссылаетесь на вывод / источник HTML, то, например, на официальном демонстрационном сайте темы Storefront , просто щелкните правой кнопкой мыши заголовок или раздел «Категории продуктов», и тогда вы можете легко это проверить section. См. Документ MDN для других опций, таких как значок «Выбор элемента».

введите описание изображения здесь

Теперь о « фактическом источнике » (то есть коде PHP или функции, которая генерирует раздел «Категории продуктов» на страницах с использованием шаблона «Домашняя страница») вы можете найти его в inc/storefront-template-functions.php.

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' ),
            ) );

            ...
        }
    }
}

Так же storefront_product_categories()как и функция PHP, которую вы ищете и которую вы можете полностью переопределить, если хотите (см. Https://docs.woocommerce.com/document/set-up-and-use-a-child-theme/# раздел-5 ). Но если вы просто хотите отображать категории товаров в случайной сортировке, то вы можете просто использовать storefront_product_categories_argsдля фильтрации аргументов запроса (что в вашем случае будет orderby):

add_filter( 'storefront_product_categories_args', function( $args ){
    $args['orderby'] = 'rand';
    return $args;
} );

Этот фильтр вызывается из storefront_product_categories()функции, и это другие фильтры / действия, которые вы можете использовать:

  • Фильтр: storefront_product_categories_shortcode_args

  • Действие: storefront_homepage_before_product_categories

  • Действие: storefront_homepage_after_product_categories_title

  • Действие: storefront_homepage_after_product_categories

Смотрите это , если вы не уверены в различиях между «действием» и «фильтром».


ОБНОВЛЕНИЕ: Как вы могли найти код?

Просмотрите документацию темы Storefront :

Я ищу способ найти функцию в теме, разработанной WooCommerce (компания), или в любой другой теме.

  • Сначала проверьте (и прочитайте) документацию темы.

  • Если ничего, или вы не / не можете найти нужную информацию, попробуйте то, что предложил @motivast - проверьте элементы на странице, найдите соответствующий HTML-код и / или CSS class/ id, а затем найдите в файлах темы эту информацию. HTML или CSS class/, idпока не найдете нужный файл или код PHP / function.

Например, на демонстрационном сайте темы Storefront HTML-код раздела категорий продуктов:

<section class="storefront-product-section storefront-product-categories" aria-label="Product Categories">
    ...
</section>

Таким образом, вы можете искать файлы темы, используя одно из следующих ключевых слов: (я бы начал с самого конкретного или самого близкого соответствия сгенерированным HTML)

  • <section class="storefront-product-section storefront-product-categories"

  • class="storefront-product-section storefront-product-categories"

  • storefront-product-categories

  • storefront-product-section

Предполагая, что вы не знаете о документации Storefront / theme, выполнение вышеуказанных поисков в итоге приведет вас к нужному файлу или коду PHP / function.

Если вам нужна дополнительная помощь, дайте мне знать, и я обновлю этот ответ соответственно.

Салли CJ
источник
Обновленная часть к ответу не работает с витриной 2.5.0. Даже не приведены примеры фильтров на их собственном сайте документации.
Klewis