web-dev-qa-db-ja.com

Woocommerce [products] shortcodeのカスタムテンプレートを定義するにはどうすればいいですか?

WooCommerce [products] shortcodeには多くの機能がありますが、「テンプレート」機能がありません。このようにカスタムテンプレートを定義するにはどうすればよいですか。

[products class="simple-list"]
1
AMIB

テーマのfunction.phpを開き、以下を追加してください

add_action( 'woocommerce_shortcode_before_products_loop', 'roka_before_products_shortcode_loop', 1, 10 );
add_action( 'woocommerce_shortcode_after_products_loop', 'roka_after_products_shortcode_loop', 0, 10 );

function roka_before_products_shortcode_loop( $atts ) {
    $GLOBALS[ 'roka_woocommerce_loop_template' ] =
        ( isset( $atts[ 'class' ] ) ? $atts[ 'class' ] : '' );
}

function roka_after_products_shortcode_loop( $atts ) {
    $GLOBALS[ 'roka_woocommerce_loop_template' ] = '';
}

次に、ファイルのcontent-product.phpをテーマのwoocommerceフォルダにコピーして上書きします。

<li <?php post_class(); ?>>という行を見つけ、その後に次を追加します。

<?php
    if(
        isset( $GLOBALS[ 'roka_woocommerce_loop_template' ] ) &&
        $GLOBALS[ 'roka_woocommerce_loop_template' ] == 'simple-list'
    ) {
        echo '<a href="' . get_the_permalink() . '">' . get_the_title() . '</a>';
        return;
    }
?>
1
AMIB