Exibir categorias aleatórias na primeira página (Localização e edição de funções do tema)

8

Atualmente, estou nos estágios alfa de editar um tema filho para um tema Wordpress. Eu tenho experiência em programação e alguma experiência em gerenciamento de wordpress, mas nenhuma experiência direta na edição de código relacionado ao wordpress. No momento, ele 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 3 categorias aleatórias com mais de x número de produtos.

Corri para os seguintes obstáculos / perguntas, impedindo-me de continuar.

  1. Que 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 na barra de navegação do Firefox?
  5. Como localizo "TheirCode" para substituí-lo por "MyCode"?

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

Esta pergunta não é sobre WooCommerce (o plugin). Estou procurando uma maneira de encontrar uma função em um tema que o WooCommerce (a empresa) projetou ou em qualquer tema realmente.

Tema Opensource: Loja WooCommerce

T. Thomas
fonte
2
Procure por tags com categorias específicas ou categorias de quebra de identificação usando o Firefox Developer Inspector. Em seguida, procure essa classe ou ID nos arquivos de origem do tema. Você deve encontrar algum tipo de função exibindo categorias. Substituindo a função ou use o filtro de função para substituir categorias.
kierzniak

Respostas:

11

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

Se você está se referindo à saída / fonte HTML, por exemplo, no site oficial de demonstração do tema Storefront , clique com o botão direito do mouse no cabeçalho ou na seção "Categorias de produtos" e poderá inspecioná-lo facilmente section. Consulte o documento MDN para outras opções, como o ícone "Selecionar elemento".

insira a descrição da imagem aqui

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

            ...
        }
    }
}

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

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

Esse filtro é chamado de dentro da storefront_product_categories()função e essas são as outras ações / filtro que você pode usar:

  • Filtro: storefront_product_categories_shortcode_args

  • Açao: storefront_homepage_before_product_categories

  • Açao: storefront_homepage_after_product_categories_title

  • Açao: storefront_homepage_after_product_categories

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


ATUALIZAÇÃO: Como você pôde encontrar o código?

Navegue pela documentação do tema Storefront :

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

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

  • Se nenhum deles / ou você não encontrou / não conseguiu encontrar as informações necessárias, tente o que o @motivast havia sugerido - Inspecione os elementos na página, localize o código HTML e / ou CSS class/ apropriados e idpesquise nos arquivos de tema HTML ou CSS class/ idaté encontrar o arquivo ou código PHP correto / 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>

Para pesquisar os arquivos de tema usando uma destas palavras-chave: (começaria da correspondência mais específica ou mais próxima ao 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 soubesse da documentação do Storefront / tema, a realização das pesquisas acima acabaria levando você ao arquivo ou código PHP correto / function.

Se precisar de mais assistência, entre em contato e atualizamos esta resposta.

Sally CJ
fonte
A parte atualizada da resposta não funciona com a fachada 2.5.0. Nem mesmo os exemplos de filtro fornecidos em seu próprio site de documentação.
klewis