web-dev-qa-db-fra.com

Afficher des catégories aléatoires sur la page d'accueil (recherche et édition de fonctions de thème)

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

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

J'ai rencontré les barrages routiers/questions suivants qui m'ont empêché de continuer.

  1. Quel mécanisme/fonction contrôle la sélection de ces catégories? (Leur code)
  2. Est-ce 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 trouver "ItsCode" pour le remplacer par "MyCode"?

La vraie question est ici: Comment 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.

Thème Opensource: WooCommerce Storefront

8
T. Thomas

La vraie question est la suivante: 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?

Si vous faites référence à la sortie HTML/source, alors par exemple sur le thème officiel de Storefront site de démonstration , cliquez avec le bouton droit de la souris sur l’en-tête ou la section "Catégories de produit" pour vous permettre de vérifier que section. Voir le doc MDN pour d'autres options telles que l'icône "Sélectionner un élément".

 enter image description here 

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

            ...
        }
    }
}

Donc storefront_product_categories() est 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_args pour filtrer les arguments de la requête (qui dans votre cas serait orderby):

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

Ce filtre est appelé depuis la fonction storefront_product_categories(), et voici 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

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


UPDATE: Comment pourriez-vous 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.

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

  • Si aucun ou que vous n'avez pas/n'a pas pu trouver les informations dont vous avez besoin, essayez ce que @motivast avait suggéré - Inspectez les éléments de la page, recherchez le code HTML et/ou CSS approprié class/id, puis recherchez les fichiers de thème pour ce code HTML ou CSS class/id jusqu'à ce que vous ayez trouvé le bon fichier ou PHP code/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 le suivant:

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

Donc, vous pouvez rechercher les fichiers de thème en utilisant un des ces mots clés: (je commencerais par la correspondance la plus spécifique ou la plus proche du code 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 mènerait éventuellement au bon fichier ou à PHP code/function.

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

11
Sally CJ