我有一个自定义的帖子类型,其中所有标题都是日期(格式:YYYY-MM-DD)。我需要按月然后按日订购,但一点也不需要按年订购。所以我想我需要一个过滤器来“查找”标题中的5个字符并按其排序。我看到的结果如下:
这些帖子通过高级自定义字段datepicker具有相应的实际日期,因此可以更方便地使用它来代替标题。我一直试图找到两种方法都不成功。不管怎样,我都很乐意找到一个解决方案。
我有一个自定义的帖子类型,其中所有标题都是日期(格式:YYYY-MM-DD)。我需要按月然后按日订购,但一点也不需要按年订购。所以我想我需要一个过滤器来“查找”标题中的5个字符并按其排序。我看到的结果如下:
这些帖子通过高级自定义字段datepicker具有相应的实际日期,因此可以更方便地使用它来代替标题。我一直试图找到两种方法都不成功。不管怎样,我都很乐意找到一个解决方案。
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();
}
}
您现在可以调整上述代码以满足您的要求<我希望这有帮助。我们在我们的网站上使用自动更新,因为有许多网站,所以手动更新在低托管成本下不可行。但由于Wordpress或主要插件更新可能会破坏您的网站,并且由于不知道Wordpress何时会实际进行更新,而这些更新也可能每天都会发生,因此我希望通过编程方式在功能中更新Wordpress和插件。php或插件,这样我就可以知道它运行的确切日期和时间,这样我们就可以在以后检查问题。例如,我可能会选择周一凌晨3点,所以我们当天早上的第一个行动是检查所有站点是否正常工作,修复任何问题,然后我知道本周其余时间将不会出现问题:)D