我在一个相当复杂的网站上工作,所有内容都是按类别类型管理的,包括自动旋转图像提交等。。不幸的是,当管理面板“所有帖子”按日期(DESC)排序时,很难管理事情。我想,将“所有帖子”按类别名称排序肯定会很方便。
我发现了这个小程序,它可以按帖子名称进行排序。
/*
Plugin Name: Set Post Order In Admin
Version: 0.1
Plugin URI: http://wordpress.org/support/topic/336715/
Description: In Posts->Edit, display posts in title order.
Author: MichaelH
Author URI: http://codex.wordpress.org/User:MichaelH/MyPlugins
check out: http://codex.wordpress.org/Class_Reference/WP_Query
in the section order and orderby parameters */
function set_post_order_in_admin( $wp_query ) {
if ( is_admin() ) {
$wp_query->set( \'orderby\', \'name\' );
$wp_query->set( \'order\', \'ASC\' ); /* ASC or DESC */
}
}
add_filter(\'pre_get_posts\', \'set_post_order_in_admin\' );
这对于按标题排序是可行的,但我确实需要能够按类别名称排序。我试着玩
$wp_query->set( \'meta_key\', \'category\' );
和
$wp_query->set( \'orderby\', \'meta_value\' );
但当我开始使用这些工具时,我的管理面板中所有帖子的回复都是空的。有什么想法吗?我试过很多术语
meta_key
他们都失败了。以前有人来过这里吗?如何实现按类别(父)对管理面板中的所有帖子进行排序的目标??
SO网友:Pim Schaaf
抛开分类法对秩序的反对意见@Otto 在里面https://wordpress.stackexchange.com/a/14309/25886, 我想他的回答是有道理的。
他提到http://scribu.net/wordpress/sortable-taxonomy-columns.html 特别是在可排序的分类列上发布文章。
以下代码为@mikeschinkel:
function color_clauses_mike( $clauses, $wp_query ) {
global $wpdb;
if ( isset( $wp_query->query[\'orderby\'] ) && \'color\' == $wp_query->query[\'orderby\'] ) {
$clauses[\'join\'] .= <<<SQL
LEFT OUTER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID={$wpdb->term_relationships}.object_id
LEFT OUTER JOIN {$wpdb->term_taxonomy} USING (term_taxonomy_id)
LEFT OUTER JOIN {$wpdb->terms} USING (term_id)
SQL;
$clauses[\'where\'] .= " AND (taxonomy = \'color\' OR taxonomy IS NULL)";
$clauses[\'groupby\'] = "object_id";
$clauses[\'orderby\'] = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) ";
$clauses[\'orderby\'] .= ( \'ASC\' == strtoupper( $wp_query->get(\'order\') ) ) ? \'ASC\' : \'DESC\';
}
return $clauses;
}
add_filter( \'posts_clauses\', \'color_clauses_mike\', 10, 2 );