虽然在core中具有持久设置的特性很好,但它可能需要很长时间才能被实际接受。WordPress 3.5还很遥远。
因此,让我们扩大全球$_REQUEST
而不是数组。
add_action( \'load-edit.php\', \'wpse34956_force_excerpt\' );
function wpse34956_force_excerpt() {
$_REQUEST[\'mode\'] = \'excerpt\';
}
这将锁定模式,强制
excerpt
模式,所以让我们轮流让用户决定,但使用用户的元数据保持持久性:
add_action( \'load-edit.php\', \'wpse34956_persistent_posts_list_mode\' );
function wpse34956_persistent_posts_list_mode() {
if ( isset( $_REQUEST[\'mode\'] ) ) {
// save the list mode
update_user_meta( get_current_user_id(), \'posts_list_mode\', $_REQUEST[\'mode\'] );
return;
}
// retrieve the list mode
if ( $mode = get_user_meta( get_current_user_id(), \'posts_list_mode\', true ) )
$_REQUEST[\'mode\'] = $mode;
}
可以进一步插值
post_type
通过考虑
$_GET[\'post_type\']
变量(如果可用)。
add_action( \'load-edit.php\', \'wpse34956_persistent_posts_list_mode\' );
function wpse34956_persistent_posts_list_mode() {
// take into account post types that support excerpts
$post_type = isset( $_GET[\'post_type\'] ) ? $_GET[\'post_type\'] : \'\';
if ( $post_type && !post_type_supports( $post_type, \'excerpt\' ) )
return; // don\'t care
if ( isset( $_REQUEST[\'mode\'] ) ) {
// save the list mode
update_user_meta( get_current_user_id(), \'posts_list_mode\' . $post_type, $_REQUEST[\'mode\'] );
return;
}
// retrieve the list mode
if ( $mode = get_user_meta( get_current_user_id(), \'posts_list_mode\' . $post_type, true ) )
$_REQUEST[\'mode\'] = $mode;
}
维奥拉!每个用户每个帖子类型的持久列表模式,无黑客攻击。