質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

1回答

2712閲覧

WordPressプラグインPerfect WooCommerce Brandsでブランド名が重複する。

wptm

総合スコア10

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/10/24 17:33

WordPressのプラグインPerfect WooCommerce Brandsを使ってブランド名の一覧表示の仕方についての質問です。

https://ja.wordpress.org/plugins/perfect-woocommerce-brands/で、
このプラグインが出来ることの1つに、"Shortcode: Display all brands"があったので、
Visual Composerを利用してPWB All Brandsをチョイスし、ページを作ったのですが、

イメージ説明

ブランド名が重複して出てきます。

AURALEE
AURALEE(0)

というように。

これが見た目が悪いのでブランド名の表示を1つにまとめたいです。

上段のテキストはリンクになっているが、商品数が出ない。
下段のテキストは商品数が出るが、リンクになっていない。
のですが、できれば商品数が出てハイパーリンクである状態でブランド名を表示させたいです。

AURALEE(0) でリンクとしてブランドページに飛べるようにしたいです。

どなた教えていただけないでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

調べてみたところ、ブランドにロゴが設定されていない場合、ロゴの代替としてブランドの名前が表示されてこのようになっていることがわかりました。サイズの揃ったロゴを設定すればいまほど酷い見た目ではなくなります。

ロゴがない場合やそういうレイアウトが好ましくない場合のため、ロゴがない場合についても書いておきます。
この「ロゴがないならブランド名」という処理はフィルターなど無しでperfect-woocommerce-brands/classes/shortcodes/class-pwb-all-brands.phpにベタ書きされています。(80行〜)

こんなものはどうしようもないので直接書き換えるのが割と現実的な手に思えます。
それが嫌であれば、ショートコードハンドラのフィルターを使います。
以下のコードを使うことで、だいたい質問文にある書式を実現できます(HTMLは酷いことになりますが)。

php

1add_filter( 'do_shortcode_tag','pab_modify',10,3); 2function pab_modify($output, $tag, $attr){ 3 if ('pwb-all-brands' != $tag) { 4 return $output; 5 } 6 if(!isset($attr['title_position']) || ('after' != $attr['title_position'])){ 7 return $output; 8 } 9 return preg_replace('/(<div class="pwb-brands-col3">\s++<div>\s++<(?:[^>"]|"[^"]++")++>)[^<]++</a>\s++</div>\s++<p>\s++([^<]++<small>[^<]++</small>)\s++</p>\s++</div>/s', "$1$2</a></div></div>", $output); 10}

このコードはショートコードが処理されるまでのどこかに書けば良いはずです。
例えば、使用しているテーマのfunction.phpに書けば動作します。
また、プラグイン Hello Dollyを有効化して編集し、?>の前に書いても動作しました。

長期的には、メンテナンス性のために子テーマを作るか(すでに作っているならそれを使えば良いですが)、これだけをやるプラグインを作るかすると良いと思います。

投稿2017/11/09 14:33

miimou

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問