删除_title和orderby的前5个字符

时间:2019-03-02 作者:user2215732

我有一个自定义的帖子类型,其中所有标题都是日期(格式:YYYY-MM-DD)。我需要按月然后按日订购,但一点也不需要按年订购。所以我想我需要一个过滤器来“查找”标题中的5个字符并按其排序。我看到的结果如下:

这些帖子通过高级自定义字段datepicker具有相应的实际日期,因此可以更方便地使用它来代替标题。我一直试图找到两种方法都不成功。不管怎样,我都很乐意找到一个解决方案。

1 个回复
SO网友:Qaisar Feroz

WordPress WP\\u查询orderby 参数有很多选项,但没有一个选项像您所追求的那样具体。

我想你必须在通过WP_Query, 然后使用usort().

您的代码应该是这样的。

$args = array(
    \'post_type\' => \'z_day\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
                      array( 
                         \'key\' => \'day_add_almanac\', 
                         \'value\' => \'yes\' 
                       )
                    ) 
    );

// Create object
$my_posts = new WP_Query( $args );

// Sort
usort( $my_posts->posts, function( $a, $b ) {

    // Convert "2018-01-28" to "0128"
    $c = str_replace(\'-\', \'\' ,substr($a->title , 5));
    $d = str_replace(\'-\', \'\' ,substr($b->title , 5));

    if( $c == $d ) {
        return 0;   
    }
    // Use < or > (or swap -1 and 1 ) for reversing order
    return ( $c > $d ) ? -1 : 1;  

});

// Loop
if( $my_posts->have_posts() ) {

    while( $my_posts->have_posts() ) {

        $my_posts->the_post();

        // Show posts
        the_title();

    }

}
您现在可以调整上述代码以满足您的要求<我希望这有帮助。

相关推荐

如何在特定日期和时间在PHP中更新WordPress和插件?

我们在我们的网站上使用自动更新,因为有许多网站,所以手动更新在低托管成本下不可行。但由于Wordpress或主要插件更新可能会破坏您的网站,并且由于不知道Wordpress何时会实际进行更新,而这些更新也可能每天都会发生,因此我希望通过编程方式在功能中更新Wordpress和插件。php或插件,这样我就可以知道它运行的确切日期和时间,这样我们就可以在以后检查问题。例如,我可能会选择周一凌晨3点,所以我们当天早上的第一个行动是检查所有站点是否正常工作,修复任何问题,然后我知道本周其余时间将不会出现问题:)D