WooCommerceのカスタマイズまとめ

WooCommerceのプラグインを使ったECサイト制作で、いくつかカスタマイズをしたので、その備忘録です。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

WooCommerceで商品ギャラリーの列数を5列に設定

WooCommerceで商品ギャラリーの列数を変える場合のカスタマイズです。

function custom_woocommerce_gallery_columns() {
    return 5; // ギャラリーの列数を5列に設定
}
add_filter('woocommerce_product_thumbnails_columns', 'custom_woocommerce_gallery_columns');

CSS。

flexを使った方が綺麗に余白を調整できます。

あとは選択中のものだけ薄く表示にした方が見やすいです。

.wp-block-woocommerce-cart {
    max-width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    position: relative !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
}
.flex-control-nav.flex-control-thumbs {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .3em;
    margin: .3em 0 0 0 !important;
}
.woocommerce .flex-control-thumbs li {
    width: calc((100% - 1.2em) / 5);
    gap: 1em;
    float: none;
}
/* 選択表示状態を逆に */
.woocommerce .flex-control-thumbs li .flex-active, .woocommerce .flex-control-thumbs li img:hover {
    opacity: .5;
}
.woocommerce .flex-control-thumbs li img {
    opacity: 1;
}

WooCommerceでショップページに在庫状況を表示する

ショップページページの商品一覧に在庫状況を掲載します。

function display_stock_status_in_shop_loop() {
    global $product;

    // 在庫がある場合
    if ( $product->is_in_stock() ) {
        echo '<p class="stock in-stock">IN STOCK</p>';
    }
    // 在庫がない場合
    else {
        echo '<p class="stock out-of-stock">SOLD OUT</p>';
    }
}
add_action('woocommerce_after_shop_loop_item', 'display_stock_status_in_shop_loop', 15);

見た目はお好みで。

.stock.out-of-stock {
    color: var(--wc-red);
    margin: 8px 4px 4px 0;
    border-radius: 2px;
    letter-spacing: 0.05em;
}

WooCommerceでカートボタンを好きな場所に配置する

カートに入れた数を掲載したカートボタンはヘッダーやスマホのフォロワーの中に表示したりするので、ショートコード化してあげると便利です。

ウィジェットに配置なりフックで好きな表示することが容易になります。

// カートボタンのみを表示する共通関数
function display_cart_button() {
    // WooCommerceが有効で、カートが存在するか確認
    if ( function_exists( 'WC' ) && WC()->cart ) {
        // カート内のアイテム数を取得
        $cart_count = WC()->cart->get_cart_contents_count(); 
        // カートのURLを取得
        $cart_url = wc_get_cart_url(); 
    } else {
        // WooCommerceがロードされていない場合、またはカートがない場合
        $cart_count = 0;
        $cart_url = '#'; // WooCommerceのカートページへのリンク
    }

    // カートボタンのHTML出力
    ob_start(); // 出力をバッファリング
    ?>
    <div class="ark-block-button is-btn-fill" data-hover="bright" style="--arkb-btn-radius:8px">
        <a class="ark-block-button__link" href="<?php echo esc_url( $cart_url ); ?>" data-has-icon="1">
            <svg class="ark-block-button__icon -left" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-icon="LsCart" viewBox="0 0 48 48">
                <circle cx="37.5" cy="42.5" r="4"></circle>
                <circle cx="13.5" cy="42.5" r="4"></circle>
                <path d="M43.5 8.5H10.2l-.7-5.3c-.1-1-1-1.7-2-1.7h-5c-1.1 0-2 .9-2 2s.9 2 2 2h3.2l3.8 29.3c.1 1 1.7 2 2.7 2h29c1.1 0 2-.9 2-2s-.9-2-2-2H13.3l-.4-4h28.6c1 0 1.9-.8 2-1.8l2-16c.1-1.1-.8-2.2-2-2.2z"></path>
            </svg>
            <span class="ark-block-button__text">カート (<?php echo esc_html( $cart_count ); ?>)</span>
        </a>
    </div>
    <?php
    return ob_get_clean(); // バッファリングを終了し、バッファの内容を出力
}

// カートボタンをショートコード化
add_shortcode('cart_button', 'display_cart_button');

ショートコードは[[cart_button]]で表示できます。

  • URLをコピーしました!
目次