Visualizza le categorie casuali in prima pagina (Trovare e modificare le funzioni del tema)


8

Sono attualmente nelle fasi alfa della modifica di un tema figlio per un tema Wordpress. Ho esperienza di programmazione e qualche esperienza nella gestione di wordpress ma nessuna esperienza diretta nella modifica del codice relativo a wordpress. Al momento mostra attualmente le prime tre categorie in ordine alfabetico.

Cosa sto cercando di fare: invece di visualizzare le prime tre categorie in ordine alfabetico, vorrei visualizzare 3 categorie casuali con più di x numero di prodotti.

Ho incontrato i seguenti blocchi stradali / domande che mi hanno impedito di procedere.

  1. Quale meccanismo / funzione controlla la selezione di queste categorie? (TheirCode)
  2. È basato sul tema o qualcosa del sistema WordPress sottostante?
  3. Quali altre informazioni sarebbero rilevanti per apportare questa modifica?
  4. Quali informazioni sarebbero utili dalla Firefox Dev Bar?
  5. Come trovo "TheirCode" in modo da poterlo sostituire con "MyCode"?

La vera domanda qui è: come posso trovare "TheirCode" che è responsabile di questa selezione usando strumenti come Firefox Dev Bar e la fonte attuale?

Questa domanda non riguarda WooCommerce (il plugin). Sto cercando un modo per trovare una funzione in un tema progettato da WooCommerce (l'azienda) o in qualsiasi tema.

Tema OpenSource: WooCommerce Storefront


2
Cerca tag con categorie specifiche o categorie di wrapping ID utilizzando Firefox Developer Inspector. Quindi, cerca questa classe o ID nei file di origine del tema. Dovresti trovare un tipo di funzione che visualizza le categorie. Funzione di sovrascrittura o utilizzare il filtro funzione per sostituire le categorie.
kierzniak,

Risposte:


11

La vera domanda qui è: come posso trovare "TheirCode" che è responsabile di questa selezione usando strumenti come la barra di sviluppo di Firefox e la fonte attuale?

Se ti riferisci all'output / sorgente HTML, ad esempio sul sito demo ufficiale del tema Storefront , fai semplicemente clic con il pulsante destro del mouse sull'intestazione o sulla sezione "Categorie di prodotti" e puoi facilmente controllarlo section. Vedi il documento MDN per altre opzioni come l'icona "Seleziona elemento".

inserisci qui la descrizione dell'immagine

Ora per la " fonte effettiva " (ovvero il codice PHP o la funzione che genera la sezione "Categorie di prodotti" su Pages usando il modello "Homepage"), puoi trovarlo in 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' ),
            ) );

            ...
        }
    }
}

Così storefront_product_categories()è la funzione PHP che stai cercando e che puoi completamente ignorare se vuoi (vedi https://docs.woocommerce.com/document/set-up-and-use-a-child-theme/# sezione 5 ). Ma se vuoi solo visualizzare le categorie di prodotti in un ordinamento casuale, puoi semplicemente usare il storefront_product_categories_argsper filtrare gli argomenti della query (che nel tuo caso sarebbe orderby):

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

Tale filtro viene chiamato dall'interno della storefront_product_categories()funzione e questi sono gli altri filtri / azioni che è possibile utilizzare:

  • Filtro: storefront_product_categories_shortcode_args

  • Azione: storefront_homepage_before_product_categories

  • Azione: storefront_homepage_after_product_categories_title

  • Azione: storefront_homepage_after_product_categories

Vedi questo se non sei sicuro delle differenze tra una "azione" e un "filtro".


AGGIORNAMENTO: Come hai trovato il codice?

Sfoglia la documentazione del tema Storefront :

Sto cercando un modo per trovare una funzione in un tema progettato da WooCommerce (l'azienda) o in qualsiasi tema.

  • Innanzitutto, controlla (e leggi) la documentazione del tema.

  • Se nessuno o non hai / non hai trovato le informazioni di cui avevi bisogno, prova ciò che @motivast aveva suggerito: ispeziona gli elementi nella pagina, trova il codice HTML e / o CSS class/ appropriati id, quindi cerca nei file dei temi HTML o CSS class/ idfino a quando non hai trovato il file o il codice PHP corretti / function.

Ad esempio, nel sito demo del tema Storefront, l'HTML della sezione delle categorie di prodotti è:

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

Quindi potresti cercare i file del tema usando una di queste parole chiave: (inizierei dalla corrispondenza più specifica o più vicina all'HTML generato)

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

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

  • storefront-product-categories

  • storefront-product-section

Supponendo che non conoscessi la documentazione di Storefront / theme, eseguire le ricerche di cui sopra ti porterebbe infine al file o al codice PHP corretti / function.

Se hai bisogno di ulteriore assistenza, fammi sapere e aggiornerò di conseguenza questa risposta.


La parte aggiornata alla risposta, non funziona con storefront 2.5.0 Neanche gli esempi di filtri forniti sul proprio sito di documentazione.
Klewis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.