如何仅保留日期介于其他日期之间的帖子?

时间:2019-02-05 20:55:49

标签: php wordpress

我有一些带有一些自定义字段的帖子,其中我有一个字符串格式的日期,因此我循环了我的帖子,并将它们转换为日期,然后做一些事情以按日期排序:< / p>

foreach($posts as $post) {
    $postid = $post->ID;
    $myDate = \DateTime::createFromFormat('j-n-Y', get_post_meta($postid, 'usp-custom-80', true));
    $postOrdered[$postid] = \DateTime::createFromFormat('j-n-Y', get_post_meta($postid, 'usp-custom-80', true));
    wp_reset_query();
}
arsort($postOrdered);
var_export($postOrdered);

因此,我将日期和ID附加在一起,这样可以给我们:

array ( 128288 => DateTime::__set_state(array( 'date' => '2017-08-20 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), 128166 => DateTime::__set_state(array( 'date' => '2017-08-17 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), 128308 => 
DateTime::__set_state(array( 'date' => '2017-08-05 20:36:02.000000', DateTime::__set_state(array( 'date' => '2000-03-20 20:36:02.000000', 
DateTime::__set_state(array( 'date' => '1978-05-11 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), 128295 => 
DateTime::__set_state(array( 'date' => '1978-04-10 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), 128337 =>
 DateTime::__set_state(array( 'date' => '1978-03-16 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), 128315 => DateTime::__set_state(array( 'date' => '1976-08-10 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), 128290 => DateTime::__set_state(array( 'date' => '1970-04-12 20:36:02.000000', 'timezone_type' => 3, 'timezone' => 'UTC', )), )

好吧,我们要做的是获取,使用formGET中获取一些$ start和$ end日期

$start = $_GET['start']; 
$end = $_GET['end'];
$start  = \DateTime::createFromFormat('j-n-Y', $start);
$end  = \DateTime::createFromFormat('j-n-Y', $end);
var_dump($start);
var_dump($end);

这给了我们

object(DateTime)#8267 (3) { ["date"]=> string(26) "2019-02-01 20:51:56.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } 
object(DateTime)#7974 (3) { ["date"]=> string(26) "2019-02-05 20:51:56.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }

现在我要做的是简单检查这些帖子中是否有任何日期在我们的$ start和$ end之间,并按ASC或DESC顺序显示它们

从字面上看

if ( ( $myDate >= $start) && ( $myDate <= $end) ) {
 ...my posts...

但这仍然给了我们所有帖子

1 个答案:

答案 0 :(得分:1)

您可以直接比较kubelet --resolve-conf个对象,因此您的代码可以编写为:

DateTime

请注意,帖子中的所有日期都在2019年之前,因此您需要调整$start = \DateTime::createFromFormat('j-n-Y', $_GET['start']); $end = \DateTime::createFromFormat('j-n-Y', $_GET['end']); foreach($posts as $post) { $postid = $post->ID; $myDate = \DateTime::createFromFormat('j-n-Y', get_post_meta($postid, 'usp-custom-80', true)); if (($myDate >= $start) && ($myDate <= $end)) { $postOrdered[$postid] = (int)$myDate->format('U'); } wp_reset_query(); } 的值才能在输出中查看任何帖子。

要获取唯一日期的排序列表,请在$start循环后使用以下代码:

foreach