-
投稿者投稿
-
2020年7月14日 11:37 PM #54061
My Snow Monkey + WooCommerceプラグインで物販向けのオンラインショップを試みています。
実装が可能であれば、ヘッダー内にカートアイコンとカートに入れた商品数(下図みたいなもの)を表示できればと思い、フォーラム内やネットをざっと調べてみましたが、情報があまり収集できませんでした。
参考として、WooCommerce対応テーマ「Storefront」を見たところ、
WC()->cart->get_cart_contents_count()
あたりを使うと思いますが、Snow Monkeyのヘッダー内に追加するのは、どの程度のカスタマイズが必要でしょうか。
ヒントをいただけると助かります。
よろしくお願いします。【お使いの Snow Monkey のバージョン】10.10.7
【お使いのブラウザ】Google Chrome 83 for Mac
【当該サイトのURL】ローカル環境♥ 0いいねをした人: 居ません2020年7月15日 3:23 PM #54106Snow Monkeyのヘッダー内に追加するのは、どの程度のカスタマイズが必要でしょうか。
Snow Monkeyのヘッダーは、レイアウト(シンプル、1行…)と位置(上部固定、オーバーレイ…)と、多々のパターンがあるので、全てのパターンでカスタマイズを対応しようとすると結構な量になると思います。
お使いのレイアウトと位置の設定のみに留めておくのであれば、PC時の表示と、モバイル時の表示の2つのパターンの書き換えのみの最低限で済むと思います。
ヒントとしてのサンプルコードを書くのも、そのカスタマイズのパターンの問題もありますので、
先にカートアイコンをどの部分に表示するかのデザインと CSS の記述を決めておかれると、アドバイスしやすいです。♥ 2いいねをした人: 居ません2020年7月16日 12:00 PM #54137Kmical Lightsさん、ありがとうございます。
カートアイコンを入れる場所としては、
カスタマイザーのデザイン → ヘッダー → ヘッダーコンテンツ(モバイルでもヘッダーコンテンツを表示)
に該当する場所です。
以下のようなコードを追加して、ヘッダーにカートの数量が出せるとベストと考えています。<a class="head_cart" href="<?php echo esc_url( wc_get_cart_url() ); ?>"> <i class="icon-cart"></i> <span class="quantity_badge"><?php echo WC()->cart->get_cart_contents_count(); ?></span> </a>
♥ 0いいねをした人: 居ません2020年7月16日 12:49 PM #54140ヘッダーコンテンツに入れられているなら、ヘッダーコンテンツの記述をフィルターフックの
theme_mod_header-content
で代入する形にすれば良いと思います。
これだと、HTMLやPHP構文も使えるんで。例としてはこんな感じでどうでしょう?
元々カスタマイザーで設定されているヘッダーコンテンツの記述は削除して使ってみてください。カスタマイザー内のページ速度最適化のヘッダーのキャッシュを有効にしている場合、正しくカウントされないので、そのキャッシュ設定は使わないようにしてください。
if ( ! is_admin() ) { // 管理画面内ではWCクラスでのget_cart_contents_countができないので… add_filter( 'theme_mod_header-content', function( $html ) { $html = '<a class="head_cart" href="' . esc_url( wc_get_cart_url() ) . '">'; $html .= '<i class="icon-cart"></i>'; $html .= '<span class="quantity_badge">' . WC()->cart->get_cart_contents_count() . '</span>'; $html .= '</a>'; return $html; } ); }
2020年7月16日 3:24 PM #54155@Kmical Lights さん、コードありがとうございます! 使い勝手を考えるとショートコード化するのも良いかなと思いました(ヘッダーコンテンツはショートコードが使えます)。
add_shortcode( 'my_cart_contents_count', function() { ob_start(); ?> <a class="head_cart" href="<?php echo esc_url( wc_get_cart_url() ); ?>"> <i class="icon-cart"></i> <span class="quantity_badge"><?php echo WC()->cart->get_cart_contents_count(); ?></span> </a> <?php return ob_get_clean(); } );
で、
[my_cart_contents_count]
として使うみたいな。♥ 3いいねをした人: 居ません2020年7月16日 7:07 PM #54175@Kmical Lightsさん
@キタジマ タカシさんご教示いただいてありがとうございます。
どちらも良い方法ですね!
今回のサイトは、ヘッダーコンテンツに何も入っていないので、@キタジマ タカシさんのショートコード版を試してみます。@Kmical Lightsさんのコードはまた別の案件で試してみたいと思います。
お二方、ありがとうございました!
♥ 1いいねをした人: 居ません2020年7月17日 10:27 PM #542512020年7月18日 7:51 AM #54262 -
投稿者投稿
- トピック「WooCommerce使用時にヘッダー内にカートアイコンとカート入れた数量を表示したい」には新しい返信をつけることはできません。