我正在开发一个插件,我为事件制作了一个CPT,它有自定义字段(其中一个字段是日期)。
一切正常,Fields和CPT正在工作,并在前端显示它们。但问题是,我无法从名为date\\u oching的自定义字段中按日期排序我的CPT帖子。
我曾在许多文章中试图找到我的问题的答案,但所有的文章都指向我尝试过的相同解决方案,但由于一些未知的原因,这些解决方案对我不起作用。
我在这里提供代码。
这就是我如何为我的cpt创建自定义字段的方法。
public function register()
{
add_action(\'admin_init\', array($this, "atAdminInit"));
add_action(\'save_post\', array($this, "atSavePost"));
}
public function atAdminInit()
{
add_meta_box("date_happening-meta", "Date", array($this, "atDateHappening"), "aegeeevents", "side", "low");
}
public function atSavePost()
{
global $post;
if(is_null($post)){
return;
}
update_post_meta($post->ID, "date_happening", $_POST["date_happening"]);
}
function atDateHappening()
{
global $post;
$custom = get_post_custom($post->ID);
$date_happening = $custom["date_happening"][0] ?? \'\';
?>
<label>Year:</label>
<input name="date_happening" type="date" value="<?php echo $date_happening; ?>"/>
<?php
}
这就是许多文章告诉我的查询参数按自定义字段值排序事件的方式。
$args = array(
\'post_type\' => \'aegeeevents\',
\'meta-value\' => \'date_happening\',
\'orderby\' => \'meta_value\',
\'order\' => \'DESC\',
);
$query = new \\WP_Query($args);
我也尝试过使用“meta\\u value\\u date”、“meta\\u value\\u num”等,但没有成功。但如果我将order值从“DESC”更改为“ASC”,那么我的所有帖子都将以相反的顺序出现,因此它似乎是按post\\u date值查询的,并且完全忽略了我的参数,除了“order”参数。
我还检查了date\\u occurrence字段值是如何保存在数据库表wp\\u postmeta中的,它的格式似乎很好。
我希望一切都可以理解,如果有人能帮助我,我将不胜感激。