填写您的邮件地址,订阅我们的精彩内容:

解决wordpress后台写文章作者问题

911

不知道是wordpress本身存在这个BUG还是我新增的功能让wordpress内部紊乱,以至于在写新文章时作者选项默认值不是当前的登录用户,而是作者列表的第一个。检查了源代码之后,发现作者下拉列表中的<option>不存在seleceted属性,因此肯定不会把当前登录用户作为默认作者了。为此,本文希望解决此问题。

本文的解决办法是通过JQuery代码,对作者下来列表进行检查,如果不存在selected属性,说明是在写新文章,因此为<option>值为当前登录用户的名字的,添加selected属性。

if($('#post_author_override').html().indexOf('selected') < 0)
$('#post_author_override option').each(function(){
?? ?if($(this).text() == '<?php echo get_userdata(get_current_user_id())->display_name; ?>')$(this).attr('selected','selected');
});

这段JQuery可以实现该目标,那么怎么让它生效呢?在functions.php中增加下面的php代码:

/**
* 解决wordpress后台新文章作者问题
* 作者:否子戈
* 主页:http://www.utubon.com
**/
[payfor price="1"]if(is_admin()):
function fix_post_author(){
?>
<script>
jQuery(function($){
?? ?if($('#post_author_override').html().indexOf('selected') < 0)
?? ?$('#post_author_override option').each(function(){
?? ??? ?if($(this).text() == '<?php echo get_userdata(get_current_user_id())->display_name; ?>')$(this).attr('selected','selected');
?? ?});
});
</script>
<?php
}
add_action('admin_print_footer_scripts','fix_post_author');
endif;[/payfor]

而当一篇文章发布之后进入编辑状态时,wordpress又会自动为作者下拉列表添加对应作者的selected属性,因此不用我们操心。

下面我简单说几句