ti-enxame.com

Exibir categorias aleatórias na primeira página (Encontrar e editar funções de tema)

Atualmente estou nos estágios alfa da edição de um tema filho para um tema do Wordpress. Eu tenho experiência de programação e alguma experiência em gerenciar o wordpress, mas sem experiência direta na edição de código relacionado ao wordpress. Atualmente, exibe as três primeiras categorias em ordem alfabética.

O que estou tentando fazer: em vez de exibir as três primeiras categorias em ordem alfabética, gostaria de exibir três categorias aleatórias com mais de um número x de produtos.

Eu corri para os seguintes obstáculos/perguntas me impedindo de prosseguir.

  1. Qual mecanismo/função controla a seleção dessas categorias? (TheirCode)
  2. É baseado em tema ou algo no sistema WordPress subjacente?
  3. Que outras informações seriam relevantes para fazer essa alteração?
  4. Quais informações seriam úteis no Firefox Dev Bar?
  5. Como faço para encontrar "TheirCode" para que eu possa substituí-lo por "MyCode"?

A verdadeira questão aqui é: Como eu encontro "TheirCode", que é responsável por esta seleção usando ferramentas como o firefox Dev Bar e a fonte real?

Esta questão não é sobre o WooCommerce (o plugin). Eu estou procurando uma maneira de encontrar uma função em um tema que WooCommerce (a empresa) projetado ou em qualquer tema realmente.

Tema Opensource: Vitrine WooCommerce

8
T. Thomas

A verdadeira questão aqui é: Como eu encontro "TheirCode", que é responsável por esta seleção usando ferramentas como barra de desenvolvimento do firefox e a fonte real?

Se você está se referindo à saída/fonte HTML, então por exemplo no site oficial da demo demo , basta clicar com o botão direito do mouse no título ou seção "Categorias do Produto" e então você pode facilmente inspecione que section. Veja o MDN doc para outras opções, como o ícone "Selecionar elemento".

enter image description here

Agora para o " a fonte real " (ou seja, o código PHP ou a função que gera a seção "Categorias de produtos" em Páginas usando o modelo "Homepage"), você pode encontrá-lo em 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' ),
            ) );

            ...
        }
    }
}

Então storefront_product_categories() é a função PHP que você está procurando e que você pode completamente substituir se você quiser (veja https://docs.woocommerce.com/document/set- up-and-use-a-child-theme/# seção-5 . Mas se você quer apenas exibir as categorias de produtos na ordenação aleatória, então você pode simplesmente usar o storefront_product_categories_args para filtrar os argumentos da consulta (que no seu caso seria orderby):

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

Esse filtro é chamado de dentro da função storefront_product_categories() e estes são os outros filtros/ações que você pode usar:

  • Filtro: storefront_product_categories_shortcode_args

  • Ação: storefront_homepage_before_product_categories

  • Ação: storefront_homepage_after_product_categories_title

  • Ação: storefront_homepage_after_product_categories

Veja this se você não tem certeza das diferenças entre uma "ação" e um "filtro".


UPDATE: como você poderia encontrar o código?

Navegue pela documentação do tema Storefront :

Eu estou procurando uma maneira de encontrar uma função em um tema que WooCommerce (a empresa) projetado ou em qualquer tema realmente.

  • Primeiro, verifique (e leia) a documentação do tema.

  • Se nenhum ou você não/não puder encontrar as informações necessárias, tente o que @motivast sugeriu - Inspecione os elementos na página, encontre o código HTML apropriado e/ou CSS class/id e, em seguida, pesquise os arquivos de tema para esse HTML ou CSS class/id até encontrar o arquivo correto ou o código PHP/function.

Por exemplo, no site de demonstração do tema Storefront, o HTML da seção de categorias de produtos é:

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

Então você pode pesquisar os arquivos de tema usando um de essas palavras-chave: (eu começaria da correspondência mais específica ou mais próxima do HTML gerado)

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

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

  • storefront-product-categories

  • storefront-product-section

Supondo que você não tenha conhecimento sobre a documentação do Storefront/theme, realizar as pesquisas acima acabaria levando você para o arquivo correto ou código PHP/function.

Se você precisar de mais ajuda, me avise e atualizarei a resposta de acordo.

11
Sally CJ