Afficher des catégories aléatoires sur la première page (Recherche et modification des fonctions de thème)

8

Je suis actuellement en phase alpha de modification d'un thème enfant pour un thème Wordpress. J'ai une expérience de programmation et une certaine expérience de la gestion de wordpress mais aucune expérience directe de l'édition de code lié à wordpress. À l'heure actuelle, il affiche actuellement les trois premières catégories par ordre alphabétique.

Ce que j'essaie de faire: Au lieu d'afficher les trois premières catégories par ordre alphabétique, je voudrais afficher 3 catégories aléatoires avec plus de x nombre de produits.

J'ai rencontré les obstacles / questions suivants m'empêchant de continuer.

  1. Quel mécanisme / fonction contrôle la sélection de ces catégories? (Leur code)
  2. Est-ce basé sur un thème ou quelque chose dans le système WordPress sous-jacent?
  3. Quelles autres informations seraient pertinentes pour effectuer ce changement?
  4. Quelles informations seraient utiles à partir de la barre de développement de Firefox?
  5. Comment puis-je trouver «leur code» afin de pouvoir le remplacer par «mon code»?

La vraie question ici est: comment puis-je trouver "leur code" qui est responsable de cette sélection en utilisant des outils tels que firefox Dev Bar et la source réelle?

Cette question ne concerne pas WooCommerce (le plugin). Je cherche un moyen de trouver une fonction dans un thème que WooCommerce (la société) a conçu ou dans n'importe quel thème vraiment.

Thème opensource: vitrine WooCommerce

T. Thomas
la source
2
Recherchez une balise avec des classes ou des catégories d'habillage d'ID spécifiques à l'aide de Firefox Developer Inspector. Ensuite, recherchez cette classe ou cet identifiant dans les fichiers source du thème. Vous devriez trouver une sorte de fonction affichant des catégories. Remplacez la fonction ou utilisez le filtre de fonction pour remplacer les catégories.
kierzniak

Réponses:

11

La vraie question ici est: comment puis-je trouver "leur code" qui est responsable de cette sélection en utilisant des outils tels que la barre de développement de Firefox et la source réelle?

Si vous faites référence à la sortie / source HTML, par exemple sur le site officiel de démonstration du thème Storefront , faites un clic droit sur l'en-tête ou la section "Catégories de produits" et vous pourrez facilement l'inspecter section. Voir la doc MDN pour d'autres options telles que l'icône "Select Element".

entrez la description de l'image ici

Maintenant, pour la " source réelle " (c'est-à-dire le code PHP ou la fonction qui génère la section "Catégories de produits" sur les pages utilisant le modèle "Page d'accueil"), vous pouvez le trouver dans 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' ),
            ) );

            ...
        }
    }
}

Il en storefront_product_categories()va de même de la fonction PHP que vous recherchez et que vous pouvez complètement remplacer si vous le souhaitez (voir https://docs.woocommerce.com/document/set-up-and-use-a-child-theme/# section-5 ). Mais si vous souhaitez simplement afficher les catégories de produits dans un tri aléatoire, vous pouvez simplement utiliser le storefront_product_categories_argspour filtrer les arguments de la requête (ce qui dans votre cas serait orderby):

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

Ce filtre est appelé à partir de la storefront_product_categories()fonction, et ce sont les autres filtres / actions que vous pouvez utiliser:

  • Filtre: storefront_product_categories_shortcode_args

  • Action: storefront_homepage_before_product_categories

  • Action: storefront_homepage_after_product_categories_title

  • Action: storefront_homepage_after_product_categories

Voyez ceci si vous n'êtes pas sûr des différences entre une "action" et un "filtre".


MISE À JOUR: Comment avez-vous pu trouver le code?

Parcourez la documentation du thème Storefront :

Je cherche un moyen de trouver une fonction dans un thème que WooCommerce (la société) a conçu ou dans n'importe quel thème vraiment.

  • Tout d'abord, vérifiez (et lisez) la documentation du thème.

  • Si aucun ou si vous n'avez pas / ne parvenez pas à trouver les informations dont vous avez besoin, essayez ce que @motivast avait suggéré - Inspectez les éléments sur la page, trouvez le code HTML et / ou CSS class/ approprié id, puis recherchez les fichiers de thème pour cela HTML ou CSS class/ idjusqu'à ce que vous trouviez le bon fichier ou le code PHP / function.

Par exemple, sur le site de démonstration du thème Storefront, le code HTML de la section des catégories de produits est:

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

Vous pouvez donc rechercher les fichiers de thème en utilisant l' un de ces mots clés: (je commencerais par la correspondance la plus spécifique ou la plus proche du code HTML généré)

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

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

  • storefront-product-categories

  • storefront-product-section

En supposant que vous ne connaissiez pas la documentation Storefront / theme, effectuer les recherches ci-dessus vous amènerait finalement au bon fichier ou code PHP / function.

Si vous avez besoin d'aide supplémentaire, faites-le moi savoir et je mettrai à jour cette réponse en conséquence.

Sally CJ
la source
La partie mise à jour de la réponse ne fonctionne pas avec la vitrine 2.5.0 Pas même les exemples de filtres donnés sur leur propre site de documentation.
klewis