🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1276閲覧

Wordpressのオリジナルテーマでカスタム投稿ページを作成、topページに抜粋を表示しRead moreで一覧ページへ、その中の各投稿をクリックして詳細を表示させたい

nouzoe_hiroaki

総合スコア17

WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/10/09 10:45

前提・実現したいこと

topページのに2つの記事一覧を載せています。
一つは通常の投稿処理、
イメージ説明
をsidebar.phpにて記載、
topページにはこの様に表示されています。
イメージ説明
こちらはread moreをクリックすると、
<a class="banner" href="<?php the_permalink(); ?>">READ MORE</a>
イメージ説明
これ専用の投稿ページsingle.phpに進みます。

そして今回問題となっているカスタム投稿ページですが、
イメージ説明
イメージ説明

sidebar.phpにて先程の投稿処理の下にサブループとして記載しています。

topページにはこの様に表示されます。
イメージ説明

そしてこのread moreをクリックすると、
<a class="banner" href="<?php the_permalink(); ?>">READ MORE</a>
イメージ説明
これ専用の投稿ページsingle-performance2.phpに進みます。
performance2というのはこのカスタム投稿ページの名前です。

single-performance2.phpに関しては、上記のサブループと同じ内容のコードを記載しています。
イメージ説明
ただ、今の時点で、画像をクリックすると、
<a href="<?php echo get_template_directory_uri(); ?>http://nishiharasekizai.net/detail/">
detail.phpという、固定ページに飛ぶ様になっています。
イメージ説明
イメージ説明
(この時点で間違っているのかもしれませんが、、)
この様に詳細を表示したいのですが、どの画像をクリックしても最新の記事しか表示されません。
これを、最新の記事ではなく、前のページ、single-performance2.phpにてクリックした投稿(post2ならpost2のみ)を表示できる様にしたいです。

ちなみに固定ページdetail.phpのテンプレートは以下の様な状態です。
イメージ説明
イメージ説明
イメージ説明

果たして、
イメージ説明
この中に万事解決する魔法のコードがあるのか??
といったところです。

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

特にこれといったエラーメッセージはありません。

該当のソースコード

上記の画像にて全てのコードを記載しています。

試したこと

$args = array()のなかに様々なパラメーターを入れ込んでみました。

'name' => 'post-slug', //投稿スラッグの指定
配列をからにしてみた
'post__in' => array(), //投稿IDを配列で指定
ファイル名single-performance2.phpをsingular-performance2.phpに変更し
detail.phpをsingle-performance2.phpとしてみた。

補足情報(FW/ツールのバージョンなど)

Wordpress 5.0.3

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

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

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

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

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

guest

回答2

0

<a href="<?php echo get_template_directory_uri(); ?>http://nishiharasekizai.net/detail/">

と書いているので、<?php echo get_template_directory_uri(); ?>http://nishiharasekizai.net/detail/に飛ぶのは当然なのでは?

こちらも

<a href="<?php the_permalink(); ?>">

に変更すれば、詳細ページへリンクするはずですが…。

一覧ページは、他の方が書いているようにarchive-performance2.phpで作成してください。
記事詳細ページのサイドバーに一覧を入れる場合は、記事詳細と別途、記事一覧を取得するwp_query()をサイドバー内に書けば取得できます。

※ソースは画像ではなく、マークダウンを使って記述したほうが、コピペできるため見やすく回答しやすいと思います…。

投稿2019/10/25 04:30

m_o

総合スコア109

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

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

0

ベストアンサー

おそらく今回はsingleを一覧用に用いているためうまくいかないのだと考えられます。

WordPressでは基本的に、下記の状態が基本です。

  • archive:一覧用のテンプレート
  • single:個別記事ページ用のテンプレート

下記の方法で改善できるかお試しください。

1. performance2 のarchiveを有効にする('has_archive' => true)

カスタム投稿タイプの追加方法によって、設定方法は異なります。

2. カスタム投稿タイプ用のテンプレートを作る

下記はページ遷移の確認ができる程度のコードです。表示したい内容によって調整してお使いください。

archive-performance2.php ※一覧用

PHP

1<?php get_header(); ?> 2<main> 3 <section> 4 <?php if (have_posts()):?> 5 <dl class="news_list"> 6 <?php while (have_posts()) : the_post(); ?> 7 <dt> 8 <span><?php the_time('Y.m.d'); ?></span> 9 </dt> 10 <dd> 11 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 12 </dd> 13 <?php endwhile; ?> 14 </dl> 15 <?php else: ?> 16 <?php endif; ?> 17 </section> 18 <!-- /section --> 19</main> 20<?php get_footer(); ?> 21

single-performance2.php ※個別記事用

PHP

1<?php get_header(); ?> 2<main> 3 <section> 4 <?php if (have_posts()): while (have_posts()) : the_post(); ?> 5 <article> 6 <div class="post_header"> 7 <h2><?php the_title(); ?></h2> 8 <p class="post_date"><?php the_time("Y.m.d") ?></p> 9 </div> 10 <div class="post_body"> 11 <!-- post thumbnail --> 12 <?php if (has_post_thumbnail()) : // Check if Thumbnail exists ?> 13 <?php the_post_thumbnail(); // Fullsize image for the single post ?> 14 <?php endif; ?> 15 <!-- /post thumbnail --> 16 <?php the_content(); ?> 17 </div> 18 <?php endwhile; ?> 19 </article> 20 <?php else: ?> 21 <?php endif; ?> 22 </section> 23</main> 24<?php get_footer(); ?> 25

3. 表示を確認する

  1. /performance2/にアクセスして、ページに投稿記事のタイトルが複数並ぶ一覧になっているか確認する
  2. タイトルをクリックしてページ遷移するか確認する
  3. ページ遷移先の情報が、一覧上でクリックしたタイトルと一致するか確認する

投稿2019/10/22 13:39

AsukaKobayashi

総合スコア296

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問