2020年7月25日

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

作者 小牛源码

不知道是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属性,因此不用我们操心。