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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1928閲覧

wordpressのパンくずリストが2行になってしまったので1行にしたいです。

koalachan

総合スコア6

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2020/06/20 10:36

前提・実現したいこと

wordpressのパンくずリストが2行になってしまったので1行にしたいです。

wordpressでTHE THORというテーマでEvents Managerを使用し、ページを作成したところ、エラーが出たので、パンくずリストに使われているphpファイルを編集してみましたが、エラーは消えたものの、パンくずリストが2行になってしまったので、1行になるように解決していただけませんでしょうか。

どうぞよろしくお願い致します。

発生している問題・エラーメッセージ

最初にページに出たエラーは以下です。
イメージ説明

エラー修正後、パンくずが二行になってしまいました。
イメージ説明

該当のソースコード

エラー修正前のPHPです。

PHP

1 function current_crumb_tag( $current_permalink, $current_text = '', $args = array(), $current_class = 'breadcrumb__item breadcrumb__item-current' ) { 2 $args = wp_parse_args( $args ); 3 $args = (object) $args; 4 $current_class = $current_class ? ' class="' . esc_attr( $current_class ) . '"' : ''; 5 $start_anchor_tag = $current_permalink ? '<a href="' . $current_permalink . '">' : ''; 6 $end_anchor_tag = $current_permalink ? '</a>' : ''; 7 $current_before = '<li' . $current_class . '>' . $start_anchor_tag . ''; 8 $current_crumb_tag = $current_text; 9 $current_after = '' . $end_anchor_tag . '</li>'; 10 if ( get_query_var( 'paged' ) ) { 11 if ( is_paged() || is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) { 12 $current_after = ' (ページ' . get_query_var( 'paged' ) . ')' . $current_after; 13 } 14 15 } elseif ( ( is_page() || is_single() ) && get_query_var( 'page' ) ) { 16 $current_after = ' (ページ' . get_query_var( 'page' ) . ')' . $current_after; 17 } 18 19 return $current_before . $current_crumb_tag . $current_after; 20 }

試したこと

エラーが出たPHPをif (!function_exists( 'current_crumb_tag' ) ) {}で囲いましたが、パンくずが2行になってしまいました。

PHP

1 if (!function_exists( 'current_crumb_tag' ) ) { 2 function current_crumb_tag( $current_permalink, $current_text = '', $args = array(), $current_class = 'breadcrumb__item breadcrumb__item-current' ) { 3 $args = wp_parse_args( $args ); 4 $args = (object) $args; 5 $current_class = $current_class ? ' class="' . esc_attr( $current_class ) . '"' : ''; 6 $start_anchor_tag = $current_permalink ? '<a href="' . $current_permalink . '">' : ''; 7 $end_anchor_tag = $current_permalink ? '</a>' : ''; 8 $current_before = '<li' . $current_class . '>' . $start_anchor_tag . ''; 9 $current_crumb_tag = $current_text; 10 $current_after = '' . $end_anchor_tag . '</li>'; 11 if ( get_query_var( 'paged' ) ) { 12 if ( is_paged() || is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) { 13 $current_after = ' (ページ' . get_query_var( 'paged' ) . ')' . $current_after; 14 } 15 16 } elseif ( ( is_page() || is_single() ) && get_query_var( 'page' ) ) { 17 $current_after = ' (ページ' . get_query_var( 'page' ) . ')' . $current_after; 18 } 19 20 return $current_before . $current_crumb_tag . $current_after; 21 }}

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

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

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

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

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

gogoweb_ikeda

2020/06/20 12:06

実際にパンくずリストを表示する部分のコードはどうなっていますか? エラーメッセージと修正後の挙動からbreadcrumb.phpを2回読み込んでいるような気がします。
koalachan

2020/06/20 12:58

ご連絡ありがとうございます。はやり仰っていただいたように同じコードが二回でてきてしまっています。これはbreadcrumb.phpの修正だけでは解決できないのでしょうか?お手数をおかけしますが、どうぞよろしくお願い致します。 <div class="l-headerBottom"> <div class="wider"> <div class="breadcrumb"> <ul class="breadcrumb__list container"> <li class="breadcrumb__item icon-home"> <a href="https://zioness.jp">HOME</a></li> <li class="breadcrumb__item"> <a href="https://zioness.jp/%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88/">イベント</a></li> <li class="breadcrumb__item breadcrumb__item-current"> <a href="https://zioness.jp/events/test/">TEST</a></li></ul></div> </div> </div> <div class="wider"> <div class="breadcrumb"> <ul class="breadcrumb__list container"> <li class="breadcrumb__item icon-home"> <a href="https://zioness.jp">HOME</a></li> <li class="breadcrumb__item"> <a href="https://zioness.jp/%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88/">イベント</a></li> <li class="breadcrumb__item breadcrumb__item-current"><a href="https://zioness.jp/events/test/">TEST</a></li></ul></div> </div>
gogoweb_ikeda

2020/06/20 13:13

テーマが有料のようなので中身は検証できませんが、breadcrumb.php内部にcurrent_crumb_tag関数とcurrent_crumb_tagを実行している箇所があるのでしょうか? このパンくずリストはページ内に自動で挿入されるのですか? パンくずリストを挿入が手動の場合間違って2回実行してませんか? エラーがでたページのページテンプレート自体は修正していませんか?
koalachan

2020/06/21 11:20

ご連絡ありがとうございます。パンくずリストは自動生成されたもので、こちらで挿入したり、テンプレートを触ったりはしていません。PHP修正後にこのようになってしまいました。
guest

回答2

0

ベストアンサー

親テーマのsingle.phpを子テーマにコピー
子テーマにコピーしたsingle.phpのファイル名をsingle-event.phpに変更

そして100行目付近のパンくずに関するphpの記述をコメントアウトか削除

php

1//single-event.php 2中略 3 4 <div class="wider"> 5 <?php fit_breadcrumb();?>←これを消す 6 </div> 7 8 9 <!--l-wrapper--> 10中略

たしかevent managerは、カスタム投稿タイプ「event」を自動的に作成していたような気がするので、
カスタム投稿タイプ用のsingleページを設けてあげたらいけそうな気がします。

eventじゃなかったら申し訳ありません。

自分はこの方法でthorのカスタム投稿タイプのパンくずが二重になる問題を解消しました。

投稿2020/06/22 17:34

bokupiroki

総合スコア54

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

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

koalachan

2020/06/27 15:57

返信が遅くなり申し訳ありません。 bokuoirokiさんとまったく同じ現象だったようです。 解決していただいたので、ベストアンサーとさせていただきます。 本当にありがとうございます。
bokupiroki

2020/06/30 08:11

解決してよかったです。 自分も最近使い始めましたが、よくわからないテーマですね
guest

0

PHP修正後にこのようになってしまいました。

ということは、function_existsで囲んだ修正しかしていないということでしょうか。

しかしそれだけでなる症状ではなさそうで、修正点を失念されているようなので何から探っていけばいいのか難しいです。

なので力技で…

まず症状としてはこういうものだと思うので

php

1function current_crumb_tag() { 2 return 'パンくずリスト'; 3} 4for ( $i=0; $i<2; $i++ ) { 5 echo current_crumb_tag(); // 二回出力される 6}

力技すぎますが応急処置としてはこうでいかがでしょうか。

php

1function current_crumb_tag() { 2 if(defined('CURRENT_CRUMB_TAG')) return; // 追加 3 define('CURRENT_CRUMB_TAG',true); // 追加 4 return 'パンくずリスト'; 5} 6for ( $i=0; $i<2; $i++) { 7 echo current_crumb_tag(); // 一回だけ出力される 8}

つまりご質問に沿っていえば、current_crumb_tag()の中の一行目と二行目に追加してください。

php

1if (!function_exists( 'current_crumb_tag' ) ) { 2function current_crumb_tag( $current_permalink, $current_text = '', $args = array(), $current_class = 'breadcrumb__item breadcrumb__item-current' ) { 3 if(defined('CURRENT_CRUMB_TAG')) return; // 追加 4 define('CURRENT_CRUMB_TAG',true); // 追加 5 /* 6 * 割愛 7 */ 8 return $current_before . $current_crumb_tag . $current_after; 9}}

投稿2020/06/22 16:27

mossbarger

総合スコア26

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

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

koalachan

2020/06/22 16:55

ご連絡ありがとうございます。 いただいたコードを追加したのですが、まだ2行のままです。ただ、私のphp修正だけでは起こる現象ではないということがわかっただけでも進歩なので、本当にありがたいです。ほかに触ってしまった箇所はないかもう一度ページを細かく見てみます。
mossbarger

2020/06/22 17:27

なるほどすみません。実行側が2回呼ばれているわけですね。そうしましたらお手数おかけして申し訳ございませんが、current_crumb_tag()を実行しているテンプレートファイルをコピペしていただけませんでしょうか。
mossbarger

2020/06/22 17:31

エディタに指定ディレクトリの一括文字列検索機能があると思いますので、テーマファイルをまるごと指定して、current_crumb_tagで検索していただければ該当の実行部分がすべて表示されると思います。その実行がループの中にあるか、または1回の読み込みの過程で2つ書かれているかだと思うので、どちらかわかりませんが見てみたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問