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

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

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

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

1205閲覧

wordpress 記事一覧からカテゴリ別一覧ページや個別ページに正しく表示がされない

benkyosuruo

総合スコア16

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2020/03/19 03:30

編集2020/03/19 08:06

解決したい点
通常記事一覧やカスタム投稿タイプ記事一覧からカテゴリに正しくリンクしたい。

現状
・通常投稿ブログ一覧や個別ページ(archive.phpのサイドバーやカスタムメニュー、single.php)から、カテゴリ別一覧ページへのリンクを押しても白いページが表示されてしまう(URLはドメイン/category/category01/)

・カスタム投稿タイプの投稿一覧ページ(archive-news.phpのサイドバーやカスタムメニュー)から、カテゴリ別一覧ページへのリンクを押すと通常投稿ブログ一覧が表示されてしまう。(カテゴリリンク押した時の画面は通常投稿ブログ一覧archive.phpのままURLはドメイン/cat_news/topics/。(topicsはターム名)

(どちらも、白い画面のときはshow current templateのプラグインが機能しておらずどこの階層にいるのか判別がつきません。)

前提
・通常投稿のサイドバーはウィジェット使用、カスタム投稿タイプは直接コードを入力して設置してあります。
・タクソノミースラッグ:cat_news
・投稿タイプ名:news
・Custom Post Type UI使用
・Advanced Custom Fields使用

試したこと
・プラグインの全停止
・functions.phpのsetupに関する部分以外の全消去
・パーマリンク設定更新
・single-news.php,archive-news.php,archive-cat_news.php,category-cat_news.phpの作成
・URLに問題があるのかと思い、https://hysryt.com/archives/1148こちらの記事の「カスタム分類アーカイブページを変える」の項目で紹介されているコード内のnewsstoreをcat_newsに変更して適用。

functions.php

// グローバルナビ if ( ! function_exists( 'lab_setup' ) ) : function lab_setup() { register_nav_menus( array( 'blog' => 'ブログナビ', 'news' => 'お知らせナビ', ) ); } endif; add_action( 'after_setup_theme', 'lab_setup' ); // サイドバー function my_theme_widgets_init() { register_sidebar( array( 'name' => 'Blog Top', 'id' => 'top-sidebar', ) ); register_sidebar( array( 'name' => 'Blog Middle', 'id' => 'middle-sidebar', ) ); register_sidebar( array( 'name' => 'Blog Bottom', 'id' => 'bottom-sidebar', ) ); } add_action( 'widgets_init', 'my_theme_widgets_init' ); // 月別アーカイブ function my_custom_post_type_archive_where( $where, $args ){ $post_type = isset( $args['post_type'] ) ? $args['post_type'] : 'post'; $where = "WHERE post_type = '$post_type' AND post_status = 'publish'"; return $where; } add_filter( 'getarchives_where', 'my_custom_post_type_archive_where', 10, 2 ); function my_archives_link($link_html){ $link_html = preg_replace('@<li>@i', '<li class="sidebar-item__list">', $link_html); return $link_html; } add_filter('get_archives_link', 'my_archives_link');

archive.php

<div class="main__container"> <div class="main__inner"> <div class="main-container"> <?php wp_nav_menu( array( 'menu_class' => 'main-menu', 'echo' => true, 'depth' => 1, 'theme_location' => 'blog', ) ); ?> </div> <div class="main__wrapper"> <main class="blog__contents"> <?php query_posts('showposts=6'); if (have_posts()) : while (have_posts()) : the_post(); ?> <article class="blog-item"> <a class="blog-item__link" href="<?php the_permalink(); ?>"> <?php the_post_thumbnail( 'thumbnail', array( 'class' => 'blog-item__img' ) ); ?> <div class="blog-item__tag"> <?php $this_categories = get_the_category(); if ( $this_categories ) { $this_category_color = get_field( 'color', 'category_' . $this_categories[0]->term_id ); $this_category_name = $this_categories[0]->name; echo '<p class="blog-item__tag-txt" style="' . esc_attr( 'background:' . $this_category_color ) . ';">' . esc_html( $this_category_name ) . '</p>'; } ?> </div> <div class="blog-item__article"> <p class="blog-item__date"><?php the_time( "Y年n月j日" ); ?></p> <h3 class="blog-item__heading"> <?php the_title(); ?> </h3> </div> </a> </article> <?php endwhile; endif; ?> <?php //Pagenation if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?> </main> <aside class="sidebar__contents"> <?php if ( is_active_sidebar('top-sidebar') ) : ?> <ul class="menu"> <?php dynamic_sidebar('top-sidebar'); ?> </ul> <?php endif; ?> <?php if ( is_active_sidebar('middle-sidebar') ) : ?> <ul class="menu"> <?php dynamic_sidebar('middle-sidebar'); ?> </ul> <?php endif; ?> <?php if ( is_active_sidebar('bottom-sidebar') ) : ?> <ul class="menu"> <?php dynamic_sidebar('bottom-sidebar'); ?> </ul> <?php endif; ?> </aside> </div> </div> </div>

archive-news.php

<!-- main --> <div class="main__container"> <div class="main__inner"> <div class="main-container"> <?php wp_nav_menu( array( 'menu_class' => 'main-menu', 'echo' => true, 'depth' => 1, 'theme_location' => 'news', ) ); ?> </div> <div class="main__wrapper"> <main class="news__contents"> <?php $args = array( 'post_type' => 'news', 'posts_per_page' => 5, ); ?> <?php $my_posts = get_posts( $args ); ?> <ul class="news-items"> <?php global $post; if($posts): foreach($my_posts as $post): setup_postdata($post); $post_id = $post->ID; $link = get_post_meta($post_id,'link',true); ?> <?php if($link) : ?> <li class="news-list"> <a class="news-list__link" href="<?php echo $link; ?>"> <div class="news-list__set"> <time class="news-list__time" datetime="2019-02-01"><?php the_time(__('Y年n月j日')) ?></time> <div class="news-list__label"> <div class="news-list__label"><?php if ($terms = get_the_terms($post->ID, 'cat_news')) { foreach ( $terms as $term ) { echo esc_html($term->name) ; } } ?> </div> </div> <p class="news-list__txt"> <?php the_title(); ?> </p> </a> </li> <?php else : ?> <li class="news-list"> <a class="news-list__link" href="<?php the_permalink() ?>"> <div class="news-list__set"> <time class="news-list__time" datetime="2019-02-01"><?php the_time(__('Y/n/j')) ?></time> <div class="news-list__label"><?php if ($terms = get_the_terms($post->ID, 'cat_news')) { foreach ( $terms as $term ) { echo esc_html($term->name) ; } } ?></div> </div> <p class="news-list__txt"> <?php the_title(); ?> </p> </a> </li> <?php endif; ?> <?php endforeach; endif;?> <?php //Pagenation if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?> </main> <aside class="sidebar__contents"> <div class="sidebar-item"> <p class="sidebar-item__ttl">最近の記事</p> <?php $posts = get_posts('post_type=news&posts_per_page=5'); ?> <?php if (!empty($posts)): ?> <ul class="sidebar-item__menu"> <?php foreach ($posts as $post):setup_postdata($post); ?> <li class="sidebar-item__list"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> <?php wp_reset_postdata(); ?> </ul> <?php endif; ?> </div> <div class="sidebar-item"> <p class="sidebar-item__ttl">カテゴリー</p> <?php $args = [ 'type' => 'news', 'taxonomy' => 'cat_news', ]; $categoryList = get_categories($args); ?> <?php if ($categoryList): ?> <ul class="sidebar-item__menu"> <?php foreach ($categoryList as $value): ?> <li class="sidebar-item__list"> <a href="<?= home_url($value->taxonomy . '/' . $value->slug) ?>/"><?= $value->name ?></a> </li> <?php endforeach; ?> </ul> <?php endif; ?> </div> <div class="sidebar-item"> <p class="sidebar-item__ttl">月別アーカイブ</p> <ul class="sidebar-item__menu"> <?php $args = array( 'post_type' => 'news', 'type' => 'monthly', 'echo' => 0 ); $list = wp_get_archives($args); echo "$list"; ?> </ul> </div> </aside> </div> </div> </div>

質問
(これは本題と外れた質問なので、わかればでいいのですが、トップページのカスタム投稿タイプのおしらせでカスタムフィールド を設置しており、カスタムフィールド にURLの入力があればリンクに直接飛ばす、そうでなければ記事を表示としているんですが、それと同じ設定をサイドバーに適用することはできないのでしょうか?)

説明が下手で長くなってしまいすみませんが、ぜひ御助力をお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

テンプレート階層の理解ができておりませんでした。
カテゴリ別もarchive.phpで表示できると思っていましたが、https://politik.hatenadiary.org/entry/20170303/1488537176こちらの記事を参考に表示できました。

投稿2020/03/19 08:23

benkyosuruo

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問