web-dev-qa-db-fra.com

Ajouter ma propre fonction au hook WooCommerce existant

J'essaie de personnaliser mon thème enfant WooCommerce avec le thème parent Storefront. Le thème parent crée un modèle de produit unique (content-single.php) comme suit:

/**
 * @hooked storefront_post_header - 10
 * @hooked storefront_post_meta - 20
 * @hooked storefront_post_content - 30
 */
do_action( 'storefront_single_post' );

et ces fonctions sont reliées pour construire la page (/inc/structure/hooks.php):

add_action( 'storefront_single_post', 'storefront_post_header', 10 );
add_action( 'storefront_single_post', 'storefront_post_meta', 20 );
add_action( 'storefront_single_post', 'storefront_post_content', 30 );

Pour référence, il s’agit de storefront_post_header function (inc/structure/post.php):

if ( ! function_exists( 'storefront_post_header' ) ) {
/**
   * Display the post header with a link to the single post
   * @since 1.0.0
 */
function storefront_post_header() { ?>
    <header class="entry-header">
    <?php

    if ( is_single() ) {
        storefront_posted_on();
        the_title( '<h1 class="entry-title" itemprop="name headline">', '</h1>' );

    } else {
        if ( 'post' == get_post_type() ) {
            storefront_posted_on();
        }

        the_title( sprintf( '<h1 class="entry-title" itemprop="name headline"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h1>' );
    }
    ?>
    </header><!-- .entry-header -->
    <?php
}

Je veux sortir ma fonction, storefront_post_header_categories (ci-dessous), après storefront_post_header . Je pensais pouvoir ajouter les éléments suivants à mon thème enfant, functions.php, pour le faire:

add_action( 'storefront_single_post', 'storefront_post_header_categories', 15 );
function storefront_post_header_categories() {
  echo "code to display categories here";
}

Cela ne fonctionne pas, ou rien en sortie sur le front-end. N'est pas non plus donner une erreur WP_DEBUG.

Qu'est-ce que je fais mal? Merci pour votre aide et laissez-moi savoir si vous avez besoin de plus d'informations.

2
Rhecil Codes

le crochet storefront_single_post concerne uniquement les articles uniques et non les produits, bien que les produits soient considérés comme des articles de type 'produit'.

C'est le crochet dont vous avez besoin:

add_action( 'woocommerce_single_product_summary', 'storefront_post_header_categories', 6 );
function storefront_post_header_categories() {
    echo "code to display categories here";
}

Vous le trouverez dans plugins/woocommerce/content-single-product.php:

/**
         * woocommerce_single_product_summary hook
         *
         * @hooked woocommerce_template_single_title - 5
         * @hooked woocommerce_template_single_rating - 10
         * @hooked woocommerce_template_single_price - 10
         * @hooked woocommerce_template_single_excerpt - 20
         * @hooked woocommerce_template_single_add_to_cart - 30
         * @hooked woocommerce_template_single_meta - 40
         * @hooked woocommerce_template_single_sharing - 50
         */
        do_action( 'woocommerce_single_product_summary' );
1
Scriptonomy