編集者や管理者が/ 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 );
どのようにこれに近づくべきかわからないが、どんな考えにも感謝するでしょう。
私はそれを特定の役割だけのためにページコンテンツに入れることを試みることができると思いますが、それを管理バーに追加するより簡単な方法はありませんか?
あなたはあなたのコードのこの修正を試すことができます:
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
を使用しました。
あなたはこれを試すかもしれません:
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 );