我有一个自定义帖子类型“员工”。我需要让它在页面上按姓氏字母顺序显示员工。我知道解决方法是使用自定义元框并将名字和姓氏分成两个字段,但我试图避免这种情况,因为这看起来很黑客,不像仅使用标题字段那么干净。
我有一个短代码,它将显示带有请求的员工“类型”分类属性的自定义帖子类型。这是一个例子:
[staff type="local"]
我不能只是假设这是我想要的标题中的第二个词,因为有些员工是夫妇,并且他们的名字都会列出,例如:“鲍勃和辛迪·史密斯”。
这是我迄今为止拥有的简码。
function get_staff($atts) {
extract( shortcode_atts( array( 'type' => 'international' ), $atts ) );
$loop = new WP_Query(
array (
'post_type' => 'staff',
'orderby' => 'title',
'staff-type' => $type
)
);
if ($loop->have_posts()) {
$output = '<div class="staff">';
while($loop->have_posts()){
$loop->the_post();
$meta = get_post_meta(get_the_id());
$output .= '
<div class="staff" style="float: left; display: block; border: 1px solid #CCC; margin: 10px; padding: 12px; background-color: #eee;">
<a href="' . get_permalink() . '">
' . get_the_post_thumbnail($post->ID, 'thumbnail') . '<br />
' . get_the_title() . '</a><br />
' . get_the_excerpt() . '
</div>
';
}
$output .= "</div>";
} else {
$output = 'No Staff Meet This Criteria Yet.';
}
return $output;
};
add_shortcode('staff', 'get_staff');
这很有效,但缺少按姓氏字母顺序排列。谢谢你尽你所能的帮助。这是我第一次真正尝试编写复杂的短代码,因此请具体说明您的答案。
尝试这个。首先添加以下内容按过滤器排序 http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_orderby在函数.php中
function posts_orderby_lastname ($orderby_statement)
{
$orderby_statement = "RIGHT(post_title, LOCATE(' ', REVERSE(post_title)) - 1) DESC";
return $orderby_statement;
}
然后像这样在您的查询中使用它
add_filter( 'posts_orderby' , 'posts_orderby_lastname' );
$loop = new WP_Query(
array (
'post_type' => 'staff',
'staff-type' => $type
)
);
并在循环后删除过滤器
remove_filter( 'posts_orderby' , 'posts_orderby_lastname' );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)