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

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

詳細はこちら
WordPress

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

Q&A

2回答

423閲覧

更新された記事のみ表示する

hakutou5963

総合スコア15

WordPress

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

0グッド

0クリップ

投稿2019/12/23 06:38

固定ページに更新された記事のみを表示させるため下記のコードを追加したのですが更新された記事が取得できません。

<?php $paged = get_query_var('paged') ?: 1; $args = array( 'paged' => $paged, // ページネーションを使いたいなら指定 'posts_per_page' => -1, // 表示件数 'post_type' => 'hogehoge', // カスタム投稿slag 'date_query' => array( array( 'compare' => 'NOT LIKE', // 投稿・更新日が違う記事のみ表示 'inclusive' => true, 'after' => 'post_date', // 投稿日時 'before' => 'post_modified', // 更新日時 ), ), 'orderby' => 'modified', //日付を出力する基準 'order' => $sort_order //表示する順番(逆はASC) ); $the_query = new WP_Query( $args ); ?>

どうすればいいのか分からず困っているのでわかる方が居られましたらアドバイスを頂けないでしょうか?
どうか宜しくお願い致します。

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

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

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

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

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

CHERRY

2019/12/23 08:20

> 下記のコードを追加したのですが更新された記事が取得できません。 どこに追加したのでしょうか?
guest

回答2

0

自分ならカスタムフィールドを利用してやりますかね。

php

1// 既存投稿の対策(メタ情報を付与したら要らないので一度実行したら消す) 2add_action( 'init', function() { 3$args = array( 4 'posts_per_page' => -1, 5 'post_type' => 'hogehoge', 6 'post_status' => 'publish', 7); 8$myposts = get_posts( $args ); 9 foreach( $myposts as $mypost ) { 10 if( $mypost->post_modified !== $mypost->post_date ) { 11 update_post_meta( $mypost->ID, 'post_modified', strtotime( $mypost->post_modified ) ); 12 } 13 } 14} );

php

1// 既存と今後の投稿に対する対策(更新時に投稿日と更新日を比較してメタ情報を更新) 2add_action( 'post_updated', function( $post_ID, $post_after ) { 3global $post_type; 4 if( $post_type === 'hogehoge' && $post_after->post_modified !== $post_after->post_date ) { 5 update_post_meta( $post_ID, 'post_modified', current_time( 'timestamp' ) ); 6 } 7}, 10, 2 );

php

1// 更新した投稿だけ降順で取得 2$args = array( 3 'posts_per_page' => -1, 4 'post_type' => 'hogehoge', 5 'post_status' => 'publish', 6 'meta_key' => 'post_modified', 7 'orderby' => 'meta_value_num', 8 'order' => 'DESC' 9);

投稿2019/12/24 07:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

php

1 'after' => 'post_date', // 投稿日時 2 'before' => 'post_modified', // 更新日時

これはできません、after,beforeはstrtotimeの引数として有効な文字列のみ受け付けます
カラム名を指定してタイムスタンプを取得することはできません

post_dateとpost_modifiedが不一致というクエリを書きたい場合
date_queryにはカラム同士を比較する術がないので出番はないです

かと言ってWP_queryにもそんなことはできないので

php

1 'posts__in'=>$wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_date != post_modified"),

みたいな感じのをWP_Queryに追加して
2段回で検索するのが一応簡単な方法かと思います

post_whereフィルタでクエリを追加できるようにするのが
汎用性やパフォーマンス面からは望ましいようにも思いますが
付帯する作業が多くてちょっと面倒です

投稿2019/12/23 10:30

KazuhiroHatano

総合スコア7819

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問