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

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

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

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

PHP

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

Q&A

解決済

1回答

3025閲覧

archive.phpのループがうまくいかない

raidomaru

総合スコア106

WordPress

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

PHP

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

0グッド

0クリップ

投稿2016/10/13 16:33

category.phpと同じ見た目で出力される記事を月別で出したいのですがループがうまく機能しません。
ループを使わない状態では出したい月の記事が1記事だけ表示されてます。

urlは下記のように出てます。
ドメイン名/date/2016/10/

宜しくお願い致します。

php

1<?php if ($posts) : foreach ($posts as $post) : start_wp(); ?> 2 3<div class="child_column_article"> 4<div class="child_column_article_left"> 5<?php the_post_thumbnail('full', array('class' => 'column_relative')); ?> 6<?php 7 $days = 7; 8 $today = date_i18n('U'); 9 $entry = get_the_time('U'); 10 $elapsed = date('U',($today - $entry)) / 86400; 11 if( $days > $elapsed ){ 12 echo "<img src=\"/wp-content/themes/xxx/shared/images/ico_01.png\" class=\"child_column_absolute\">"; 13 } 14?> 15</div> 16<div class="child_column_article_right"> 17<time><?php the_time('Y/n/d'); ?></time> 18<h2><?php the_title();?></h2> 19<p><?php echo mb_substr(strip_tags($post-> post_content),0,40).'...'; ?></p> 20<div class="child_column_article_more"> 21<a href="<?php the_permalink();?>"> 22<img src="<?php echo get_template_directory_uri(); ?>/shared/images/btn_03.png" alt=""> 23</a> 24</div> 25</div> 26</div> 27 28<?php endforeach; else: ?>

category.phpでのループ

php

1 <?php query_posts('showposts=5&orderby=date&category_name=column'); while(have_posts()) : the_post(); ?> 2<div class="child_column_article"> 3<div class="child_column_article_left"> 4<?php the_post_thumbnail('full', array('class' => 'column_relative')); ?> 5<?php 6 $days = 7; 7 $today = date_i18n('U'); 8 $entry = get_the_time('U'); 9 $elapsed = date('U',($today - $entry)) / 86400; 10 if( $days > $elapsed ){ 11 echo "<img src=\"/wp-content/themes/xxx/shared/images/ico_01.png\" class=\"child_column_absolute\">"; 12 } 13?> 14</div> 15<div class="child_column_article_right"> 16<time><?php the_time('Y/n/d'); ?></time> 17<h2><?php the_title();?></h2> 18<p><?php echo mb_substr(strip_tags($post-> post_content),0,40).'...'; ?></p> 19<div class="child_column_article_more"> 20<a href="<?php the_permalink();?>"> 21<img src="<?php echo get_template_directory_uri(); ?>/shared/images/btn_03.png" alt=""> 22</a> 23</div> 24</div> 25</div> 26 27<?php endwhile;?>

念のためfunction.php

php

1<?php 2remove_action('wp_head', 'wp_generator'); 3remove_action('wp_head', 'rsd_link'); 4remove_action('wp_head', 'wlwmanifest_link'); 5remove_action('wp_head', 'print_emoji_detection_script', 7); 6remove_action('wp_head','wp_shortlink_wp_head', 10, 0 ); 7remove_action('wp_head','adjacent_posts_rel_link_wp_head', 10); 8remove_action('wp_print_styles', 'print_emoji_styles' ); 9remove_action('admin_print_scripts', 'print_emoji_detection_script'); 10remove_action('admin_print_styles', 'print_emoji_styles'); 11 12//自動pタグのキャンセル 13add_action('init', function() { 14 remove_filter('the_excerpt', 'wpautop'); 15 remove_filter('the_content', 'wpautop'); 16}); 17 18add_filter('tiny_mce_before_init', function($init) { 19 $init['wpautop'] = false; 20 $init['apply_source_formatting'] = ture; 21 return $init; 22}); 23 24//アイキャッチの有効化 25add_theme_support('post-thumbnails'); 26 27 28?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

PHP

1<?php if ($posts) : foreach ($posts as $post) : start_wp(); ?> 2 //ここにループするテンプレート 3<?php endforeach; else: ?> 4```を 5```PHP 6<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 7 //ここにループするテンプレート 8<?php endwhile; endif; ?> 9```にしてもかわりませんか? 10 11--- 12 13`start_wp()` は廃止される関数です。 14 15【start_wp() | Function | WordPress Developer Resources】 16[https://developer.wordpress.org/reference/functions/start_wp/](https://developer.wordpress.org/reference/functions/start_wp/) 17 18`query_posts()` も公式サイトで「使うべきではありません」とまでかかれる関数なので、`pre_get_posts`フックなどで処理されるほうが良いと思います。 19 20【テンプレートタグ/query posts - WordPress Codex 日本語版】 21[https://wpdocs.osdn.jp/テンプレートタグ/query_posts](https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts) 22> ひとことで言うと、query_posts() は決して使うべきではありません。 23 24【query_postsとそろそろお別れを。| Electric fruits blog】 25[http://www.electric-fruits.com/creator-blog/blog20140918/](http://www.electric-fruits.com/creator-blog/blog20140918/)

投稿2016/10/13 16:53

kei344

総合スコア69364

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

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

raidomaru

2016/10/13 18:13 編集

アーカイブうまく出ました!ありがとうございます。 query_posts()を書き換えようとしましたが、うまくいきませんでした。 ページネーションもうまくいかないのでもう少し頑張ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問