前提・実現したいこと
Luxeritasで作成したサイトのカルーセルスライダーに、その記事の属するカテゴリーの最上位のカテゴリーの記事一覧を表示させたいです。
発生している問題・エラーメッセージ
現在、記事が属しているカテゴリーの一番下位のカテゴリーの記事しかカルーセルスライダーに表示されていない状態です。
そのため、記事の属する一番上位のカテゴリーのすべての記事を表示させたいです。
該当のソースコード
変更を加える必要があると思われるcategory.phpのコードは以下の通りです。
PHP
1<?php 2function get_categories( $args = '' ) { 3 $defaults = array( 'taxonomy' => 'category' ); 4 $args = wp_parse_args( $args, $defaults ); 5 6 $args['taxonomy'] = apply_filters( 'get_categories_taxonomy', $args['taxonomy'], $args ); 7 8 // Back compat. 9 if ( isset( $args['type'] ) && 'link' === $args['type'] ) { 10 _deprecated_argument( 11 __FUNCTION__, 12 '3.0.0', 13 sprintf( 14 /* translators: 1: "type => link", 2: "taxonomy => link_category" */ 15 __( '%1$s is deprecated. Use %2$s instead.' ), 16 '<code>type => link</code>', 17 '<code>taxonomy => link_category</code>' 18 ) 19 ); 20 $args['taxonomy'] = 'link_category'; 21 } 22 23 $categories = get_terms( $args ); 24 25 if ( is_wp_error( $categories ) ) { 26 $categories = array(); 27 } else { 28 $categories = (array) $categories; 29 foreach ( array_keys( $categories ) as $k ) { 30 _make_cat_compat( $categories[ $k ] ); 31 } 32 } 33 34 return $categories; 35} 36 37 38function get_category( $category, $output = OBJECT, $filter = 'raw' ) { 39 $category = get_term( $category, 'category', $output, $filter ); 40 41 if ( is_wp_error( $category ) ) { 42 return $category; 43 } 44 45 _make_cat_compat( $category ); 46 47 return $category; 48} 49 50function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) { 51 $category_path = rawurlencode( urldecode( $category_path ) ); 52 $category_path = str_replace( '%2F', '/', $category_path ); 53 $category_path = str_replace( '%20', ' ', $category_path ); 54 $category_paths = '/' . trim( $category_path, '/' ); 55 $leaf_path = sanitize_title( basename( $category_paths ) ); 56 $category_paths = explode( '/', $category_paths ); 57 $full_path = ''; 58 59 foreach ( (array) $category_paths as $pathdir ) { 60 $full_path .= ( '' !== $pathdir ? '/' : '' ) . sanitize_title( $pathdir ); 61 } 62 63 $categories = get_terms( 64 array( 65 'taxonomy' => 'category', 66 'get' => 'all', 67 'slug' => $leaf_path, 68 ) 69 ); 70 71 if ( empty( $categories ) ) { 72 return; 73 } 74 75 foreach ( $categories as $category ) { 76 $path = '/' . $leaf_path; 77 $curcategory = $category; 78 while ( ( 0 != $curcategory->parent ) && ( $curcategory->parent != $curcategory->term_id ) ) { 79 $curcategory = get_term( $curcategory->parent, 'category' ); 80 81 if ( is_wp_error( $curcategory ) ) { 82 return $curcategory; 83 } 84 85 $path = '/' . $curcategory->slug . $path; 86 } 87 88 if ( $path == $full_path ) { 89 $category = get_term( $category->term_id, 'category', $output ); 90 _make_cat_compat( $category ); 91 92 return $category; 93 } 94 } 95 96 // If full matching is not required, return the first cat that matches the leaf. 97 if ( ! $full_match ) { 98 $category = get_term( reset( $categories )->term_id, 'category', $output ); 99 _make_cat_compat( $category ); 100 101 return $category; 102 } 103} 104 105function get_category_by_slug( $slug ) { 106 $category = get_term_by( 'slug', $slug, 'category' ); 107 108 if ( $category ) { 109 _make_cat_compat( $category ); 110 } 111 112 return $category; 113} 114 115function get_cat_ID( $cat_name ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid 116 $cat = get_term_by( 'name', $cat_name, 'category' ); 117 118 if ( $cat ) { 119 return $cat->term_id; 120 } 121 122 return 0; 123} 124 125function get_cat_name( $cat_id ) { 126 $cat_id = (int) $cat_id; 127 $category = get_term( $cat_id, 'category' ); 128 129 if ( ! $category || is_wp_error( $category ) ) { 130 return ''; 131 } 132 133 return $category->name; 134} 135 136function cat_is_ancestor_of( $cat1, $cat2 ) { 137 return term_is_ancestor_of( $cat1, $cat2, 'category' ); 138} 139 140function sanitize_category( $category, $context = 'display' ) { 141 return sanitize_term( $category, 'category', $context ); 142} 143 144function sanitize_category_field( $field, $value, $cat_id, $context ) { 145 return sanitize_term_field( $field, $value, $cat_id, 'category', $context ); 146} 147 148function get_tags( $args = '' ) { 149 $defaults = array( 'taxonomy' => 'post_tag' ); 150 $args = wp_parse_args( $args, $defaults ); 151 152 $tags = get_terms( $args ); 153 154 if ( empty( $tags ) ) { 155 $tags = array(); 156 } else { 157 158 $tags = apply_filters( 'get_tags', $tags, $args ); 159 } 160 161 return $tags; 162} 163 164function get_tag( $tag, $output = OBJECT, $filter = 'raw' ) { 165 return get_term( $tag, 'post_tag', $output, $filter ); 166} 167 168function clean_category_cache( $id ) { 169 clean_term_cache( $id, 'category' ); 170} 171 172function _make_cat_compat( &$category ) { 173 if ( is_object( $category ) && ! is_wp_error( $category ) ) { 174 $category->cat_ID = $category->term_id; 175 $category->category_count = $category->count; 176 $category->category_description = $category->description; 177 $category->cat_name = $category->name; 178 $category->category_nicename = $category->slug; 179 $category->category_parent = $category->parent; 180 } elseif ( is_array( $category ) && isset( $category['term_id'] ) ) { 181 $category['cat_ID'] = &$category['term_id']; 182 $category['category_count'] = &$category['count']; 183 $category['category_description'] = &$category['description']; 184 $category['cat_name'] = &$category['name']; 185 $category['category_nicename'] = &$category['slug']; 186 $category['category_parent'] = &$category['parent']; 187 } 188} 189
試したこと
現在カルーセルスライダーにカテゴリーを表示させるために引っ張ってきているcategory.phpの中に、
https://teratail.com/questions/283792
のサイトを参考に、以下のコードを追加すればよいのではないかと考えています。
が、どこにどのように挿入するべきかがわからない状態です。
PHP
1$catid = get_query_var( 'cat' ); 2$parents = get_category_parents( $catid, false, ',', true); 3$parents = explode( ',', $parents ); 4$root = get_category_by_slug( $parents[0] ); 5 6print_r( $root ); 7//結果 8WP_Term Object 9( 10 [term_id] => 10 11 [name] => BLOG 12 [slug] => blog 13 [term_group] => 0 14 [term_taxonomy_id] => 10 15 [taxonomy] => category 16 [description] => 17 [parent] => 0 18 [count] => 2 19 [filter] => raw 20 [cat_ID] => 10 21 [category_count] => 2 22 [category_description] => 23 [cat_name] => BLOG 24 [category_nicename] => blog 25 [category_parent] => 0 26) 27 28//カテゴリ名の出力 29echo esc_html( $root->name );
補足情報(FW/ツールのバージョンなど)
・WordPressのバージョン:
5.1
・使用しているテーマ:
Luxeritasバージョン: 3.9.1
Luxeritas Child Themeバージョン: 3.0.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。