我试图允许我的编辑和管理员单击“编辑作者”,就像他们在/authors/jdoe这样的页面上时从管理栏“编辑文章”或“编辑[自定义文章类型]”
(注:我知道$wp_rewrite->author_base = \'people\'
所以我的地址是/人/jdoe。。。不确定这是否会产生任何潜在问题。)
我试图通过函数来实现这一点,但后来读到了函数。php处理得太早,无法从页面内容中获取当前模板或任何变量或ID。
function add_author_edit_link( $wp_admin_bar ) {
if ( is_page_template(\'author.php\') ) {
$args = array(
\'id\' => \'author-edit\',
\'title\' => __( \'Edit Person\' ),
\'href\' => \'/wp-admin/user-edit.php?user_id=\' . $user->ID
);
$wp_admin_bar->add_node($args);
} // if is_page_template author
}
add_action( \'admin_bar_menu\', \'add_author_edit_link\', 500 );
我不知道该怎么做,但我很感激你的想法。
我想我可以尝试将其仅用于某些角色的页面内容,但是否有更简单的方法将其添加到管理栏中?
最合适的回答,由SO网友:birgire 整理而成
您可以尝试对代码进行以下修改:
function add_author_edit_link( $wp_admin_bar )
{
if ( is_author() && current_user_can( \'add_users\' ) )
{
$args = array(
\'id\' => \'author-edit\',
\'title\' => __( \'Edit Author\' ),
\'href\' => admin_url( sprintf(
\'user-edit.php?user_id=%d\',
get_queried_object_id()
) )
);
$wp_admin_bar->add_node($args);
}
}
add_action( \'admin_bar_menu\', \'add_author_edit_link\', 99 );
我们使用
get_queried_object_id()
函数获取作者id。
请注意,您可以使用admin_url()
获取后端的url。
我使用is_author()
此处代替is_page_template( \'author.php\' )
.
该链接可能与无法修改其他用户的用户无关,因此我添加了current_user_can( \'add_users\' )
检查我找不到edit_users
功能因此我使用add_users
相反