我已经设置了一个自定义帖子类型,用于在Wordpress中创建员工目录。当我添加新员工时,他们会自动按所有帖子的顺序首先出现,这对于大多数类型的帖子类型都是有意义的。
使用简单的自定义帖子顺序重新排列帖子非常容易,但每次都很麻烦,所以我很好奇是否有人知道是否有办法按顺序自动添加新帖子?
使用函数中最基本的代码.php添加帖子类型:
function create_posttype() {
register_post_type( 'staff',
array(
'labels' => array(
'name' => __( 'Staff' ),
'singular_name' => __( 'Staff' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'staff'),
)
);
}
add_action( 'init', 'create_posttype' );
实际上有很多方法可以做到这一点,但这里有一种:
添加一个操作以更改查询中的 ORDER 参数,如下所示。
add_action('pre_get_posts', function( $query ) {
$query->set('order', 'ASC');
});
请注意,上述查询将作用于所有 POST 查询(包括在管理员中(,这可能不是您想要的,因此您必须将$query->set()
包装在逻辑中,以便它仅在您想要的页面上运行。例如,若要仅在与员工 CPT 合作时更改顺序,请使用以下命令:
add_action('pre_get_posts', function( $query ) {
if ( 'staff' == $query->query['post_type'] ) {
$query->set('order', 'ASC');
}
});
另请注意,在此操作中,$query
是通过引用传递的,而不是通过赋值传递的,因此无需使用 global
关键字,也无需返回任何内容。
呵