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

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

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

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

Q&A

解決済

1回答

2192閲覧

wordpress 個別投稿ページについて 

Lyo

総合スコア12

WordPress

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

0グッド

0クリップ

投稿2017/04/15 07:41

編集2017/04/15 08:04

現在、ワードプレスにてサイトを制作しておりますが
新着記事をクリックすると他の記事も表示されてしまいます。

UTF

1<?php get_header(2); ?> 2<?php get_sidebar(2); ?> 3<section class="main single"> 4 <div id="mainvisual"> 5 <div id="mainvisual_inner"> 6 <?php get_template_part('head'); ?> 7 </div> 8 </div> 9 <div class="inr"> 10 <div class="body cf"> 11 <div id="blog" class="contents"> 12 <?php 13 if (have_posts()): 14 while(have_posts()): 15 the_post(); 16 17 ?> 18 <article> 19 <h3><?php the_title(); ?><span><?php the_time('Y.n.j'); ?></span></h3> 20 <div class="article_body"> 21 <?php the_content(); ?> 22 </div> 23 </article> 24 <?php 25 endwhile; 26 endif; 27 ?> 28 </div> 29 </div> 30 </div> 31</section> 32<div class="clear"></div> 33 34<?php get_footer(); ?>

こちらのコードでsingle.phpを用意しています。

原因のわかる方、宜しくお願いいたします。

追記

オリジナルテーマです。

サイドバー

UTF

1<?php 2/** 3 * The template for displaying the sidebar 4 * @package WordPress 5 */ 6?> 7<div id="nav" class="sidebar2"> 8 <div class="side_inr1"> 9 <div class="side_title1"> 10<img src=""> 11 <div class="blog"> 12<?php query_posts('posts_per_page=5'); ?> 13<?php if (have_posts()):while(have_posts()):the_post(); ?> 14 15<a href="<?php echo get_permalink(); ?>"><h2><p><?php the_title(); ?></p></h2></a> 16 17<?php endwhile; endif; ?> 18</div> 19 </div> 20 </div> 21 <div class="side_inr2"> 22 <div class="side_title2"> 23 <img src=""> 24 </div> 25 <img src=""> 26 <img src=""> 27 </div> 28 <div class="side_inr3"> 29 <div class="side_title3"> 30 <img src=""> 31 </div> 32<a href=""></a> 33 <a href=""></a> 34 <a href=""></a> 35<a href="/contact-2/"><img src=""></a> 36</div> 37<div class="side_fb"> 38<iframe src=""></iframe> 39</div> 40</div>

ヘッダー

UTF

1<?php 2/** 3 * The template for displaying the header 4 * @package WordPress 5 */ 6?> 7<!DOCTYPE html> 8<html> 9<head> 10<meta charset="utf-8"> 11<meta name="keywords" content=""> 12<meta name="description" content=""> 13<title></title> 14<?php wp_head(); ?> 15<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0"> 16<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 17<link href="<?php echo get_stylesheet_directory_uri() ?>/style.css" rel="stylesheet" type="text/css" media="all"> 18</head> 19 20<body> 21<header> 22<a href=""><h1><img class="logo2" src=""></h1></a> 23</div> 24 25</header>

footer.php

UTF

1<?php 2/** 3 * The template for displaying the footer 4 * @package WordPress 5 */ 6?> 7<div class="cb"></div> 8</div> 9 10 11<?php wp_footer(); ?> 12</body> 13</html> 14

function.php

UTF

1<?php 2 3// ウィジェット 4register_sidebar(); 5 6add_theme_support( 'post-thumbnails', array( 'post' ) ); 7set_post_thumbnail_size( 100, 100, true ); 8 9 10function new_excerpt_more($post) { 11 return '<a href="'. get_permalink($post->ID) . '">' . '...続きを読む' . '</a>'; 12} 13add_filter('excerpt_more', 'new_excerpt_more'); 14 15 16?> 17<?php 18// functions.phpに以下を追記 19add_action('admin_menu', 'add_custom_fields'); 20add_action('save_post', 'save_custom_fields'); 21 22// 記事ページと固定ページでカスタムフィールドを表示 23function add_custom_fields() { 24 add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'post'); 25 add_meta_box( 'my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'page'); 26} 27 28function my_custom_fields() { 29 global $post; 30 $keywords = get_post_meta($post->ID,'keywords',true); 31 $description = get_post_meta($post->ID,'description',true); 32 33 echo '<p>キーワード(半角カンマ区切り)<br>'; 34 echo '<input type="text" name="keywords" value="'.esc_html($keywords).'" size="60" /></p>'; 35 36 echo '<p>ページの説明(description)160文字以内<br>'; 37 echo '<input type="text" style="width: 600px;height: 40px;" name="description" value="'.esc_html($description).'" maxlength="160" /></p>'; 38} 39 40// カスタムフィールドの値を保存 41function save_custom_fields( $post_id ) { 42 if(!empty($_POST['keywords'])) 43 update_post_meta($post_id, 'keywords', $_POST['keywords'] ); 44 else delete_post_meta($post_id, 'keywords'); 45 46 if(!empty($_POST['description'])) 47 update_post_meta($post_id, 'description', $_POST['description'] ); 48 else delete_post_meta($post_id, 'description'); 49} 50 51function my_description() { 52 53// カスタムフィールドの値を読み込む 54$custom = get_post_custom(); 55if(!empty( $custom['keywords'][0])) { 56 $keywords = $custom['keywords'][0]; 57} 58if(!empty( $custom['description'][0])) { 59 $description = $custom['description'][0]; 60} 61?> 62<?php if(is_home()): // トップページ ?> 63<meta name="robots" content="index, follow" /> 64<meta name="keywords" content="トップページに表示させるkeywords(半角カンマ区切り)"> 65<meta name="description" content="トップページに表示させるdescription" /> 66<?php elseif(is_single()): // 記事ページ ?> 67<meta name="robots" content="index, follow" /> 68<meta name="keywords" content="<?php echo $keywords ?>"> 69<meta name="description" content="<?php echo $description ?>"> 70<?php elseif(is_page()): // 固定ページ ?> 71<meta name="robots" content="index, follow" /> 72<meta name="keywords" content="<?php echo $keywords ?>"> 73<meta name="description" content="<?php echo $description ?>"> 74<?php elseif (is_category()): // カテゴリーページ ?> 75<meta name="robots" content="index, follow" /> 76<meta name="description" content="<?php single_cat_title(); ?>の記事一覧" /> 77<?php elseif (is_tag()): // タグページ ?> 78<meta name="robots" content="noindex, follow" /> 79<meta name="description" content="<?php single_tag_title("", true); ?>の記事一覧" /> 80<?php elseif(is_404()): // 404ページ ?> 81<meta name="robots" content="noindex, follow" /> 82<title><?php echo 'お探しのページが見つかりませんでした'; ?></title> 83<?php else: // その他ページ ?> 84<meta name="robots" content="noindex, follow" /> 85<?php endif; ?> 86<?php 87}

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

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

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

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

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

kei344

2017/04/15 07:51

使用されているテーマは自作テーマでしょうか?それとも公開されているテーマでしょうか?後者の場合は入手先をリンクつきで質問文に追記してください。自作テーマの場合は関連する箇所(functions.phpやヘッダやサイドバー部分)全てのコードを提示ください。
guest

回答1

0

ベストアンサー

サイドバーで使用している query_posts が原因です。WP_Query に置き換えて処理する必要があります。

【WordPressで押さえておきたい!get_posts,WP_Query,query_posts の違いと用例|TECHNICAL BLOG|株式会社エムハンド】
http://www.m-hand.co.jp/program/4119/

投稿2017/04/15 08:26

kei344

総合スコア69364

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

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

Lyo

2017/04/15 09:23

ありがとうございます! <?php $args = array( 'post_type' => '$my_post'); ?> <?php // the query $the_query = new WP_Query( $args ); ?> <?php if ( $the_query->have_posts() ) : ?> <!-- the loop --> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php endwhile; ?> <!-- end of the loop --> </ul> </div> <?php wp_reset_postdata(); ?> <?php else : ?> <p> <?php _e( '記事がありません' ); ?> </p> <?php endif; ?> こう記述してみたのですが、うまく反応しません、、
kei344

2017/04/15 09:24

どこの話でしょうか?
Lyo

2017/04/16 12:00

サイドバーの <?php query_posts('posts_per_page=5'); ?> <?php if (have_posts()):while(have_posts()):the_post(); ?> <a href="<?php echo get_permalink(); ?>"><h2><p><?php the_title(); ?></p></h2></a> <?php endwhile; endif; ?> を上記に入れ替えました。
kei344

2017/04/16 12:53

「うまく反応しません」とはどのような状況でしょうか。コメントのものであればそもそもループ内に出力がありませんが、ソースを見ても「空」の状態なのか、「記事がありません」と出るのか。また、その際にメインのループが表示されないとか、詳しく記載ください。 また、サイドバーと「get_template_part('head');」無しで記事1件のみの表示になるかどうか確認してみてください。
Lyo

2017/04/16 13:23

現在は記事がありませんと表示されました。 サイドバーとget_template_part('head');なしですと1件のみ表示されました。
kei344

2017/04/16 14:00

$args = array( 'post_type' => '$my_post'); は $args = array( 'post_type' => $my_post ); でしょうか。 サイドバーと「get_template_part('head');」のどちらかだけなのか、両方消さなければ1件にならないのかなど、問題を切り分けてどの部分が問題か確認していってください。
Lyo

2017/04/17 02:35

ありがとうございます! single.phpの記事部分は1件のみ表示されるようになりました! しかし、single.phpのサイドバー部分の新着記事表示は未だに記事がありませんと表示されます。 $args = array( 'post_type' => '$my_post'); を$args = array( 'post_type' => $my_post ); に変更してみたのですがそうしますとデザイン崩れが発生し、さらに記事も表示されません。 $args = array( 'post_type' => '$my_post'); で投稿記事を抜き出せていないことが原因だとは思うのですが。。
kei344

2017/04/17 02:41

$my_post に適切な値が入っていないのでは?
Lyo

2017/04/17 03:11

こちらには投稿の全記事から新着記事を表示したいので$args = array( 'post_type' => 'post');等に変えてみたのですがうまくいかないのですが。。$my_postは全記事抜き出すということではないのでしょうか? すみません。
kei344

2017/04/17 04:10

> $my_postは全記事抜き出すということではないのでしょうか? 聞いたことがありません。そういう機能は無いと思います。( $my_post を自分で定義していないのであれば) $the_query = new WP_Query( array( 'posts_per_page' => 5 ) ); ではどうでしょう?
Lyo

2017/04/17 04:21

そうなんですね。自分で定義する方法がわかっていないだけなんですね。。 サイドバーを <?php $the_query = new WP_Query( array( 'posts_per_page' => 5 ) ); ?> <?php // the query $the_query = new WP_Query( $args ); ?> <?php if ( $the_query->have_posts() ) : ?> <!-- the loop --> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php endwhile; ?> <!-- end of the loop --> </ul> </div> <?php wp_reset_postdata(); ?> <?php else : ?> <p> <?php _e( '記事がありません' ); ?> </p> <?php endif; ?> にしてみましたが、特に変化なく「記事がありません」と表示されております。
8-0_nyan5

2017/04/17 04:26

kei344さんが、コメントに書かれていますが、「そもそもループ内に出力がありません」 <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>のあとに 表示したいコードを入れてください。
kei344

2017/04/17 04:30

<?php $the_query = new WP_Query( array( 'posts_per_page' => 5 ) ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); ?> kiji <?php } /* while */ wp_reset_postdata(); } else { ?><p>記事なし</p><?php }; /* have_posts() */ ?> これではどうなりますか?元の記述を削除してから置き換えてください。
Lyo

2017/04/17 04:51

お二方ありがとうございます。 そちらのコードに変更いたしますと「記事なし」 と表示されます。
kei344

2017/04/17 06:02

<?php $the_query = new WP_Query( array( 'posts_per_page' => 5 ) ); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); ?> kiji <?php } /* while */ wp_reset_postdata(); } else { ?><p>記事なし</p><?php }; /* have_posts() */ ?> すみません、ちょっと間違えました。これでも記事は無いと出ますか?
Lyo

2017/04/17 06:21

ありがとうございます。 kiji kiji kiji kiji kiji このように表示されます。
kei344

2017/04/17 06:35

さっきのコードの「kiji」部分を下記に置き換え。 <a href="<?php echo get_permalink(); ?>"><h2><p><?php the_title(); ?></p></h2></a>
Lyo

2017/04/17 06:42

表示されました!!本当にありがとうございます!! 理解はできていないのですが。。本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問