添加管理员栏链接以编辑作者

时间:2015-01-23 作者:rktl-c

我试图允许我的编辑和管理员单击“编辑作者”,就像他们在/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 );
我不知道该怎么做,但我很感激你的想法。

我想我可以尝试将其仅用于某些角色的页面内容,但是否有更简单的方法将其添加到管理栏中?

2 个回复
最合适的回答,由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 相反

SO网友:Ariful Islam

您可以尝试以下操作:

function add_author_edit_link( $wp_admin_bar ) {
    if ( is_author() && current_user_can( \'add_users\' )) {
        $currentUserID = get_current_user_id();
        $args = array(
            \'id\' => \'author-edit\',
            \'title\' => __( \'Edit Person\' ),
            \'href\' => \'/wp-admin/user-edit.php?user_id=\' . $currentUserID
        );
        $wp_admin_bar->add_node($args);
    }
}
add_action( \'admin_bar_menu\', \'add_author_edit_link\', 500 );

结束

相关推荐

Admin-Ajax.php, SSL, Non-SSL

我有一个反向代理背后的WordPress网站。该站点通过http,但wp admin区域除外,该区域位于https下。我们没有BasicAuth或任何运行在管理区域顶部的东西。我们的一个前端插件出现故障,因为它正在调用https://admin-ajax.php 浏览器似乎不喜欢这种行为。(如果有关系,URL字符串包含nonce)允许前端调用admin ajax的最佳方式是什么。php?我是否应该将所有对该文件的调用从https重定向到http?如果是,我如何做到这一点,同时仍然要求/wp admin下的