我基本上是在我的functions.php
按标题升序排列自定义帖子类型。
function set_custom_post_types_admin_order($wp_query) {
if (is_admin()) {
$post_type = $wp_query->query[\'post_type\'];
if ( $post_type == \'games\') {
$wp_query->set(\'orderby\', \'title\');
$wp_query->set(\'order\', \'ASC\');
}
if ( $post_type == \'consoles\') {
$wp_query->set(\'orderby\', \'title\');
$wp_query->set(\'order\', \'ASC\');
}
}
}
add_filter(\'pre_get_posts\', \'set_custom_post_types_admin_order\');
有没有办法把这两者结合起来
if
语句,所以我不会重复代码。比如:
if ( $post_type == \'games\' OR \'consoles\') OR {
$wp_query->set(\'orderby\', \'title\');
$wp_query->set(\'order\', \'ASC\');
}
谢谢!
SO网友:Brian Richards
首先,在连接到pre\\u get\\u posts挂钩时要非常小心。这会激发在整个站点中运行的每个查询。我强烈建议您在函数的开头添加一两个条件,以限制此筛选器的范围。
第二,我建议检查一下if ( in_array( $post_type, array( \'games\', \'consoles\' ) )
作为一个更好的选择。
这里使用OR语句的方式实际上是不正确的,您需要更好地扩展条件,例如:。if ( $post_type == \'games\' || $post_type == \'consoles\' )
. 如果你选择坚持这种写条件的方式,我还建议你养成写“尤达条件”的习惯,比如:if ( \'games\' == $post_type || \'consoles\' == $post_type )
.
在“yoda条件”中,值后面跟着变量,这样就更容易发现缺失的=
符号和错误语句。这样你的生活会更幸福,相信我:)