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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1114閲覧

最上位のカテゴリーの記事の一覧をカルーセルスライダーに表示させたい

chocolatexxx

総合スコア1

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

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

PHP

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/09/06 12:24

前提・実現したいこと

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

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

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

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

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

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

guest

回答1

0

自己解決

以下のプラグインを適用することで、ウィジェットの表示順を任意に変更でき、各カテゴリーごとの記事の表示順序も変更できたため、質問をクローズします。

プラグイン名:
Simple Custom Post Order
WordPressの記事を好きな順番に並び替えられるプラグイン

投稿2020/12/22 15:19

chocolatexxx

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問