我正在尝试替换发布按钮文本,以仅提交特定用户角色的审阅。但我找不到任何可以指定当前用户角色并应用筛选器的内容。这是我的代码,它不起作用。
add_filter( \'gettext\', \'change_publish_button\', 10, 2 );
function change_publish_button( $translation, $text ) {
if( !current_user_can(\'administrator\') ) {
if ( $text == \'Publish\' )
return \'Submit for review\';
};
return $translation;
}
我还尝试使用
$current_user = wp_get_current_user();
if (in_array(\'level-1-contributor\', $current_user->roles))
它也不起作用。用我的一点知识,我可以理解调用功能。php需要这样的代码-
add_action(\'init\',\'do_stuff\');
但我不明白我怎样才能实现我想要的。需要你的帮助。
为试图发表愚蠢评论的人编辑-gettext用于更改wordpress仪表板文本,而无需硬编码。可以将gettext用作函数。php函数或插件中。仪表板中的Wordpress发布按钮-这是通用的帖子/页面/自定义帖子类型发布按钮。所以我想要的是——我想使用gettext过滤器,这样我就可以将发布按钮文本替换为其他文本,而无需编辑wordpress核心文件。我可以做到这一点。但我试图使此功能仅适用于特定的用户角色。假设“作者”。我尝试添加
if (current_user_can(\'author\'))
但这给了我错误。我无法调用在gettext筛选器中提供用户信息的任何内容。我如何绕过它或以不同的方式来实现它,从而实现我想要的?
最合适的回答,由SO网友:dipak_pusti 整理而成
你尝试过的每件事都应该做得很好,我不知道这为什么不起作用,
我正在修改您的代码以检查帖子类型,检查它是否可以帮助您,
function rename_publish_button_to_review( $translation, $text ) {
if( !current_user_can(\'administrator\') && \'post\' == get_post_type() ) {
if( \'Publish\' == $text ) {
return "Submit for review";
}
}
return $translation;
}
add_filter( \'gettext\', \'rename_publish_button_to_review\', 10, 2 );
另一方面,尝试在未指定角色时查看此函数是否工作。
WILL THIS WORK ?
function rename_publish_button_to_review( $translation, $text ) {
if( \'Publish\' == $text ) {
return "Submit for review";
}
return $translation;
}
function wpse_53371_bulk_actions()
{
if ( ! is_admin() )
return;
if ( ! current_user_can( \'administrator\' ) )
{
add_filter( \'gettext\', \'rename_publish_button_to_review\', 10, 2 )
}
}
add_action( \'wp_loaded\', \'wpse_53371_bulk_actions\' );