質問編集履歴

3

試したことをもう少しわかりやすく修正

2020/06/22 11:28

投稿

bokupiroki
test CHANGED
File without changes
test CHANGED
@@ -126,6 +126,172 @@
126
126
 
127
127
 
128
128
 
129
+ ###追加で試したこと1
130
+
131
+ 親テーマの該当関数が定義されているファイルにif文を追記しました。
132
+
133
+ ```php
134
+
135
+ //breadcrumb.php
136
+
137
+
138
+
139
+ //中略
140
+
141
+
142
+
143
+
144
+
145
+ if ( function_exists( 'current_crumb_tag' ) ) {
146
+
147
+ function current_crumb_tag( $current_permalink, $current_text = '', $args = array(), $current_class = 'breadcrumb__item breadcrumb__item-current' ) {
148
+
149
+ $args = wp_parse_args( $args );
150
+
151
+ $args = ( object )$args;
152
+
153
+ $current_class = $current_class ? ' class="' . esc_attr( $current_class ) . '"': '';
154
+
155
+ $start_anchor_tag = $current_permalink ? '<a href="' . $current_permalink . '">': '';
156
+
157
+ $end_anchor_tag = $current_permalink ? '</a>' : '';
158
+
159
+ $current_before = '<li' . $current_class . '>' . $start_anchor_tag . '';
160
+
161
+ $current_crumb_tag = $current_text;
162
+
163
+ $current_after = '' . $end_anchor_tag . '</li>';
164
+
165
+ if ( get_query_var( 'paged' ) ) {
166
+
167
+ if ( is_paged() || is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) {
168
+
169
+ $current_after = ' (ページ' . get_query_var( 'paged' ) . ')' . $current_after;
170
+
171
+ }
172
+
173
+
174
+
175
+ } elseif ( ( is_page() || is_single() ) && get_query_var( 'page' ) ) {
176
+
177
+ $current_after = ' (ページ' . get_query_var( 'page' ) . ')' . $current_after;
178
+
179
+ }
180
+
181
+
182
+
183
+ return $current_before . $current_crumb_tag . $current_after;
184
+
185
+ }
186
+
187
+ }
188
+
189
+
190
+
191
+ //中略
192
+
193
+
194
+
195
+ //めちゃくちゃ長いif文の途中
196
+
197
+ } else {
198
+
199
+ $post_type_object = get_post_type_object( get_post_type() );
200
+
201
+ $breadcrumb_html .= '<li' . $li_class . '><a href="' . get_post_type_archive_link( get_post_type() ) . '">' . $post_type_object->label . '</a></li>';
202
+
203
+ $taxonomies = get_object_taxonomies( get_post_type() );
204
+
205
+ $category_term = '';
206
+
207
+
208
+
209
+ foreach ( $taxonomies as $taxonomy ) {
210
+
211
+ $taxonomy_obj = get_taxonomy( $taxonomy );
212
+
213
+ if ( true == $taxonomy_obj->hierarchical ) {
214
+
215
+ $category_term = $taxonomy_obj;
216
+
217
+ break;
218
+
219
+ }
220
+
221
+ }
222
+
223
+
224
+
225
+ if ( $category_term ) {
226
+
227
+ $terms = get_the_terms( $post->ID, $category_term->name );
228
+
229
+
230
+
231
+ if ( $terms ) {
232
+
233
+ if ( !$terms || is_wp_error( $terms ) )
234
+
235
+ $terms = array();
236
+
237
+
238
+
239
+ $terms = array_values( $terms );
240
+
241
+ $term = $terms[ 0 ];
242
+
243
+
244
+
245
+ if ( $term->parent != 0 ) {
246
+
247
+ $ancestors = array_reverse( get_ancestors( $term->term_id, $term->taxonomy ) );
248
+
249
+ foreach ( $ancestors as $ancestor ) {
250
+
251
+ $breadcrumb_html .= '<li' . $li_class . '><a href="' . get_term_link( $ancestor, $term->taxonomy ) . '">' . get_term( $ancestor, $term->taxonomy )->name . '</a></li>';
252
+
253
+ }
254
+
255
+ }
256
+
257
+ //156行目↓↓
258
+
259
+ $breadcrumb_html .= '<li' . $li_class . '><a href="' . get_term_link( $term, $term->taxonomy ) . '">' . $term->name . '</a></li>';
260
+
261
+ }
262
+
263
+ }
264
+
265
+
266
+
267
+ $breadcrumb_html .= current_crumb_tag( get_the_permalink( $single->ID ), get_the_title( $single->ID ) );
268
+
269
+ }
270
+
271
+ //中略
272
+
273
+ ```
274
+
275
+ すると今度は次のようなエラーに変わりました。
276
+
277
+ ```
278
+
279
+ Fatal error: Uncaught Error: Call to undefined function current_crumb_tag() in /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/inc/front/breadcrumb.php:156 Stack trace: #0 /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/header.php(273): fit_breadcrumb() #1 /home/smart-mobile/www/kenshou/wp-includes/template.php(723): require_once('/home/smart-mob...') #2 /home/smart-mobile/www/kenshou/wp-includes/template.php(672): load_template('/home/smart-mob...', true) #3 /home/smart-mobile/www/kenshou/wp-includes/general-template.php(41): locate_template(Array, true) #4 /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/single.php(1): get_header() #5 /home/smart-mobile/www/kenshou/wp-includes/template-loader.php(106): include('/home/smart-mob...') #6 /home/smart-mobile/www/kenshou/wp-blog-header.php(19): require_once('/home/smart-mob...') #7 /home/smart-mobile/www/kenshou/index.php(17): require('/home/smart-mob...') #8 {main} thrown in /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/inc/front/breadcrumb.php on line 156
280
+
281
+ ```
282
+
283
+ 「breadcrumb.php on line 156」と末尾にあることから今度は同じファイルの156行目付近に何かあるのか探してみましたが、よくわかりませんでした。(上記に周辺コードも載せています)
284
+
285
+
286
+
287
+ 関数名を定義する部分だけでなく、途中に登場する「$current_crumb_tag」にも何か処理を加えないといけないのでしょうか
288
+
289
+
290
+
291
+
292
+
293
+
294
+
129
295
  ### 補足情報(FW/ツールのバージョンなど)
130
296
 
131
297
  ・WordPress5.4.2

2

試したことの追加

2020/06/22 11:14

投稿

bokupiroki
test CHANGED
File without changes
test CHANGED
@@ -132,6 +132,8 @@
132
132
 
133
133
  ・PHP 7.3.18
134
134
 
135
+ ・プラグインはすべて停止状態
136
+
135
137
 
136
138
 
137
139
  有料テーマなのでサポートにも問い合わせていますが、回答が得られていない状態です・・・

1

プラグインは全部停止している旨を追記

2020/06/22 09:02

投稿

bokupiroki
test CHANGED
File without changes
test CHANGED
@@ -126,187 +126,11 @@
126
126
 
127
127
 
128
128
 
129
- ###追加で試したこと1
130
-
131
- hayato7様の回答をもとに、
132
-
133
- 親テーマの該当関数が定義されているファイルに
134
-
135
- 「if ( function_exists( 'current_crumb_tag' )」
136
-
137
- のようなif文を追記しました。
138
-
139
-
140
-
141
- ```php
142
-
143
- //breadcrumb.php
144
-
145
-
146
-
147
- //中略
148
-
149
-
150
-
151
-
152
-
153
- if ( function_exists( 'current_crumb_tag' ) ) {
154
-
155
- function current_crumb_tag( $current_permalink, $current_text = '', $args = array(), $current_class = 'breadcrumb__item breadcrumb__item-current' ) {
156
-
157
- $args = wp_parse_args( $args );
158
-
159
- $args = ( object )$args;
160
-
161
- $current_class = $current_class ? ' class="' . esc_attr( $current_class ) . '"': '';
162
-
163
- $start_anchor_tag = $current_permalink ? '<a href="' . $current_permalink . '">': '';
164
-
165
- $end_anchor_tag = $current_permalink ? '</a>' : '';
166
-
167
- $current_before = '<li' . $current_class . '>' . $start_anchor_tag . '';
168
-
169
- $current_crumb_tag = $current_text;
170
-
171
- $current_after = '' . $end_anchor_tag . '</li>';
172
-
173
- if ( get_query_var( 'paged' ) ) {
174
-
175
- if ( is_paged() || is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) {
176
-
177
- $current_after = ' (ページ' . get_query_var( 'paged' ) . ')' . $current_after;
178
-
179
- }
180
-
181
-
182
-
183
- } elseif ( ( is_page() || is_single() ) && get_query_var( 'page' ) ) {
184
-
185
- $current_after = ' (ページ' . get_query_var( 'page' ) . ')' . $current_after;
186
-
187
- }
188
-
189
-
190
-
191
- return $current_before . $current_crumb_tag . $current_after;
192
-
193
- }
194
-
195
- }
196
-
197
-
198
-
199
- //中略
200
-
201
-
202
-
203
- //元から書いてあっためちゃくちゃ長いif文の途中
204
-
205
- } else {
206
-
207
- $post_type_object = get_post_type_object( get_post_type() );
208
-
209
- $breadcrumb_html .= '<li' . $li_class . '><a href="' . get_post_type_archive_link( get_post_type() ) . '">' . $post_type_object->label . '</a></li>';
210
-
211
- $taxonomies = get_object_taxonomies( get_post_type() );
212
-
213
- $category_term = '';
214
-
215
-
216
-
217
- foreach ( $taxonomies as $taxonomy ) {
218
-
219
- $taxonomy_obj = get_taxonomy( $taxonomy );
220
-
221
- if ( true == $taxonomy_obj->hierarchical ) {
222
-
223
- $category_term = $taxonomy_obj;
224
-
225
- break;
226
-
227
- }
228
-
229
- }
230
-
231
-
232
-
233
- if ( $category_term ) {
234
-
235
- $terms = get_the_terms( $post->ID, $category_term->name );
236
-
237
-
238
-
239
- if ( $terms ) {
240
-
241
- if ( !$terms || is_wp_error( $terms ) )
242
-
243
- $terms = array();
244
-
245
-
246
-
247
- $terms = array_values( $terms );
248
-
249
- $term = $terms[ 0 ];
250
-
251
-
252
-
253
- if ( $term->parent != 0 ) {
254
-
255
- $ancestors = array_reverse( get_ancestors( $term->term_id, $term->taxonomy ) );
256
-
257
- foreach ( $ancestors as $ancestor ) {
258
-
259
- $breadcrumb_html .= '<li' . $li_class . '><a href="' . get_term_link( $ancestor, $term->taxonomy ) . '">' . get_term( $ancestor, $term->taxonomy )->name . '</a></li>';
260
-
261
- }
262
-
263
- }
264
-
265
- //156行目↓↓
266
-
267
- $breadcrumb_html .= '<li' . $li_class . '><a href="' . get_term_link( $term, $term->taxonomy ) . '">' . $term->name . '</a></li>';
268
-
269
- }
270
-
271
- }
272
-
273
-
274
-
275
- $breadcrumb_html .= current_crumb_tag( get_the_permalink( $single->ID ), get_the_title( $single->ID ) );
276
-
277
- }
278
-
279
- //中略
280
-
281
- ```
282
-
283
- すると今度は次のようなエラーに変わりました。
284
-
285
- ```
286
-
287
- Fatal error: Uncaught Error: Call to undefined function current_crumb_tag() in /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/inc/front/breadcrumb.php:156 Stack trace: #0 /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/header.php(273): fit_breadcrumb() #1 /home/smart-mobile/www/kenshou/wp-includes/template.php(723): require_once('/home/smart-mob...') #2 /home/smart-mobile/www/kenshou/wp-includes/template.php(672): load_template('/home/smart-mob...', true) #3 /home/smart-mobile/www/kenshou/wp-includes/general-template.php(41): locate_template(Array, true) #4 /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/single.php(1): get_header() #5 /home/smart-mobile/www/kenshou/wp-includes/template-loader.php(106): include('/home/smart-mob...') #6 /home/smart-mobile/www/kenshou/wp-blog-header.php(19): require_once('/home/smart-mob...') #7 /home/smart-mobile/www/kenshou/index.php(17): require('/home/smart-mob...') #8 {main} thrown in /home/smart-mobile/www/kenshou/wp-content/themes/the-thor/inc/front/breadcrumb.php on line 156
288
-
289
- ```
290
-
291
- 「breadcrumb.php on line 156」と末尾にあることから今度は同じファイルの156行目付近に何かあるのか探してみましたが、よくわかりませんでした。(上記に周辺コードも載せています)
292
-
293
-
294
-
295
- 関数名を定義する部分だけでなく、途中に登場する「$current_crumb_tag」にも何か処理を加えないといけないのでしょうか
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
129
  ### 補足情報(FW/ツールのバージョンなど)
304
130
 
305
131
  ・WordPress5.4.2
306
132
 
307
133
  ・PHP 7.3.18
308
-
309
- ・プラグインはすべて停止状態
310
134
 
311
135
 
312
136