gpt4 book ai didi

mysql - WordPress 自定义订单按帖子标题中的姓氏过滤

转载 作者:行者123 更新时间:2023-11-30 01:33:38 24 4
gpt4 key购买 nike

我有一个针对员工的自定义帖子类型,它使用帖子标题作为人员姓名。为了按姓氏排序,我使用顺序过滤器查找标题中的最后一个单词,然后按它排序:

function posts_orderby_lastname ($orderby_statement) 
{
$orderby_statement = "RIGHT(post_title, LOCATE(' ', REVERSE(post_title)) - 1) ASC";
return $orderby_statement;
}

这对于大多数具有正常名字和姓氏的员工来说非常有用,但我不知道如何为类似的名字(所有都应该按“条款”排序:

圣诞老人

圣诞老人三世

小圣诞老人

圣诞老人克林格尔

M。老圣诞老人

我假设我可以有一个存储的数组,然后检查这些术语(如“Jr.”、“II”等)或检查找到的术语的长度是否大于 3,但我没有想法如何将其实现到代码中。任何想法或帮助将不胜感激 - 提前致谢!

最佳答案

我也遇到了类似的问题,我是这样解决的。您可以针对您描述的所有边缘情况扩展 if 语句。

$args = array(
'post_type' => 'page',
'orderby' => 'menu_order',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'order' => 'ASC'
);
$posts = get_posts( $args );

// Order by second word in title, deal with edge cases
$lastname = array();
foreach( $posts as $key => $post ) {
$word = explode( ' ', $post->post_title );
$name = null;

if( strlen($word[1]) == 1 ) {
// Second word only 1 letter, so use third word if set
$name = $word[2];

} elseif( $word[3] == 'Sr.' ) {
// Third word is 'Sr.', so use 2nd word
$name = $word[1];

} else {
$name = $word[1];
}

$lastname[$key] = $name;
}
array_multisort( $lastname, SORT_ASC, $posts );

// Loop through posts
foreach( $posts as $post ) {
echo $post->post_title;
}

关于mysql - WordPress 自定义订单按帖子标题中的姓氏过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com