WordPress的:通过自定义后类型
我有一个自定义后类型叫接触,就像名字,姓氏,电话号码等WordPress的:通过自定义后类型
在管理部分的自定义字段会按时间顺序我认为,排序列默认排序,但我需要它们默认按姓氏排序。
我读过关于这里的所有其他解决方案,没有他们的工作,其中包括:
function set_post_order_in_admin($wp_query) {
global $pagenow;
if (is_admin() && 'edit.php' == $pagenow && !isset($_GET['orderby'])) {
$wp_query->set('orderby', 'surname');
$wp_query->set('order', 'ASC');
}
}
add_filter('pre_get_posts', 'set_post_order_in_admin');
但无论现场我尝试,没有什么变化,进行排序,除了切换ASC/DESC似乎改变反转时间顺序。
我在做什么错?
更换
$wp_query->set('orderby', 'surname');
$wp_query->set('order', 'ASC');
随着
$query->set('meta_key', 'surname'); // name of your post meta key
$query->set('orderby', 'meta_value'); // meta_value since it is a string
它可以帮助
请参考下的解决方案,
function wpa84258_admin_posts_sort_last_name($query){
global $pagenow;
if(is_admin()
&& 'edit.php' == $pagenow
&& !isset($_GET['orderby'])
&& !isset($_GET['post_type'])){
$query->set('meta_key', 'last_name');
$query->set('orderby', 'meta_value');
$query->set('order', 'ASC');
}
}
add_action('pre_get_posts', 'wpa84258_admin_posts_sort_last_name');
或引用此solution
这工作。我错过了这个,但感谢上帝,我现在尝试了它。 – Junaid
我是一名drupal开发人员,没有机会使用WordPress。 我们遇到了同样的问题,这是我们如何解决它的。
获取您的自定义内容类型数据(WP默认api或自定义查询),它将是一个对象数组。使用下面的函数对它们排序返回已排序的帖子数组。不知道,你需要在wordpress中实现这个钩子。
/**
* Function to sort array by key
* sortArrayByKey($yourArray,"name",true); //String sort (ascending order)
* sortArrayByKey($yourArray,"name",true,false); //String sort (descending order)
* sortArrayByKey($yourArray,"id"); //number sort (ascending order)
* sortArrayByKey($yourArray,"count",false,false); //number sort (descending order)
*/
function sortArrayByKey(&$array, $key, $string = false, $asc = true)
{
if ($string) {
usort($array, function ($a, $b) use (&$key, &$asc) {
if ($asc) return strcmp(strtolower($a{$key}), strtolower($b{$key}));
else return strcmp(strtolower($b{$key}), strtolower($a{$key}));
});
} else {
usort($array, function ($a, $b) use (&$key, &$asc) {
if ($a[$key] == $b{$key}) {
return 0;
}
if ($asc) return ($a{$key} < $b{$key}) ? -1 : 1;
else return ($a{$key} > $b{$key}) ? -1 : 1;
});
}
}
,然后在你的钩子,你可以调用
return $this->sortArrayByKey($posts, "surname");
功能,从这个答案抄这个功能:https://stackoverflow.com/a/39872303/3086531
这是一个解决方案,但不是一个理想的解决方案。零性能 – Junaid
同样的事情发生在我身上也。 – Junaid
你的条件是否错误。首先尝试在删除ifs后执行此操作。 – shazyriver