私は Advanced Custom Fields プラグインを使用して、企業のリーダーシップディレクトリページと管理バイオページのすべてのデータ要素を作成しました。
サイトのブログでは、経営者自身が記事を投稿することはありませんが、記事があるかのように表示されるはずです。私はこのやり方を「ゲスト作者」と呼んでいると思います - コンテンツがサイト管理者によって彼らの代わりに投稿されているWordPressサイトにユーザーアカウントを持っていない作家。
私が起こりたいのはこれです:
私は比較的WordPressのテーマ開発に慣れておらず、これを達成するための方法としてGooglingを使っています。これら2つの投稿は、私が自分の状況に最も近いと思うものですが、自分がやろうとしていることを解決するものではありません。
これは一般的なやり方ですか?もしそうなら、誰かが私にもっと詳しい情報を教えてくれる?どうもありがとうございます。
私はちょっとそこに着いています。これまでのところ、ゲスト著者が存在する場合は、カスタム著者投稿リンクを作成することに成功しました。
投稿投稿者とゲスト投稿者のURLは、フォーマットが一致しています…
投稿者の例:www(dot)example.com/author/john-doeゲストの作者の例:www(dot)example.com/author/jane-doe
それでは、投稿者ORゲスト投稿者からの投稿を表示するために、投稿者アーカイブページをハイジャックする方法を理解する必要があります。
FUNCTIONS.PHPコード:
add_filter( 'the_author_posts_link', 'custom_author_posts_link' );
function custom_author_posts_link($url) {
`global $post;
$post_object = get_field('post_author');
if ( $post_object ) {
`// GUEST AUTHOR EXISTS - override post object to grab relevant guest author info
global $post;
$post = $post_object;
setup_postdata( $post );
$guest_author_slug = $post->post_name;
$guest_author_name = get_field('team_member_name');
$guest_author_posts_link = site_url() . '/author/' . $guest_author_slug;
$guest_url = sprintf(
'<a href="%1$s" title="%2$s" rel="author">%3$s</a>',
esc_url( $guest_author_posts_link ),
esc_attr( sprintf( __( 'Posts by %s' ), $guest_author_name ) ),
$guest_author_name
);
$guest_url = $link;
wp_reset_postdata(); // We're done here. Return to main $post object
`
}
return $url;
`
}
私は物事を少しやり直しました。著者のアーカイブページを「ハイジャック」する代わりに、必要に応じて "the_author_posts_link"フィルタをカスタム投稿タイプを指すように変更しました。今私の3つの著者タイプのそれぞれは私が彼らのバイオと活動を表示することができる終点を持ちます。
ブログ投稿では、高度なカスタムフィールドを使用します。これには、チームリーダーシップとゲスト投稿者という2つの関連する投稿タイプから選択した投稿オブジェクトが含まれています。
add_filter( 'the_author_posts_link', 'custom_author_posts_link' );
function custom_author_posts_link($url) {
global $post;
// Check if a post author is defined in the post_author post object. If none is defined, override will not occur and default post author will display
$post_object = get_field('post_author');
if ( $post_object ) {
// Post author exists. Override post object to grab relevant guest author info.
global $post;
$post = $post_object;
setup_postdata( $post );
$author_type = get_field('author_type');
$author_slug = $post->post_name;
$author_name = get_field('author_name');
// Use the post author type to determine the author link
if ( strtolower($author_type) == 'guest contributor' ){
$author_posts_link = site_url() . '/guest-contributor/' . $author_slug;
} else {
$author_posts_link = site_url() . '/leadership-team/' . $author_slug;
}
// Format the link to return. This is based off the default filter (See WordPress: https://core.trac. wordpress.org/browser/tags/4.1/src/wp-includes/author-template.php)
$guest_url = sprintf(
'<a href="%1$s" tit le="%2$s" rel="author">%3$s</a>',
esc_url( $author_po sts_link ),
esc_attr( sprintf( __( 'Posts by %s' ), $author_name ) ),
$author_name
);
$url = $guest_url;
wp_reset_postdata(); // We're done here, return to main $post object
}
return $url;
}
あなたはあなた自身の仕事のトンを節約し、ちょうどCo-Authors Plusプラグインを使用することができました。ゲストオーサリング機能があります。あなたはそれらを設定する必要がありますが、彼らのためのアカウント/パスワードはありません、そして彼らは作者ページを持つことができます。 (私は彼らと提携していません。いくつかのサイトで使用してください。)
あなたが何かを「普通の」ワードプレスの作者のように振る舞わせたいのならば、それを行うための「ダミー」アカウントを作成すること、そして本当にそれにログインする可能性を無効にしたいのであれば。他の方法で機能を模倣する他の解決策のためには、あなたが最初に模倣しようとしている機能を完全に理解する必要があります。 「……。