web-dev-qa-db-ja.com

著者を編集するための管理バーリンクを追加する

編集者や管理者が/ authors/jdoeのようなページにいる場合、管理者バーから[投稿の編集]や[カスタム投稿の種類の編集]をクリックして[著者の編集]をクリックできるようにします。

(注:私のアドレスが/ people/jdoeになるように$wp_rewrite->author_base = 'people'を実行します。これによって潜在的な問題が発生するかどうかわかりません。)

私は関数を通してこれをやろうとしました、しかし後で後でfunctions.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 );

どのようにこれに近づくべきかわからないが、どんな考えにも感謝するでしょう。

私はそれを特定の役割だけのためにページコンテンツに入れることを試みることができると思いますが、それを管理バーに追加するより簡単な方法はありませんか?

3
rktl-c

あなたはあなたのコードのこの修正を試すことができます:

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 );

著者IDを取得するためにget_queried_object_id()関数を使います。

バックエンドへのURLを取得するために admin_url() を使用できることに注意してください。

ここではis_author()の代わりに is_page_template( 'author.php' ) を使います。

この編集者の編集リンクは、他のユーザーを変更できないユーザーには関係がない可能性があるため、current_user_can( 'add_users' )チェックを追加しました。 edit_usersケーパビリティが見つからなかったので、代わりにadd_usersを使用しました。

2
birgire

あなたはこれを試すかもしれません:

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 );
1
Ariful Islam