맹조さま
お返事ありがとうございます。
>>投稿者のページを作るといいです
というのは固定ページである投稿者の記事一覧を出力しておき、
検索フォームでは固定ページを検索するということでしょうか?
この方法ですと、投稿者が増えたときに固定ページも増やさないと駄目だと思いますので、
これから投稿者が増えるといった場合には厳しいですね。
WordPressはデフォルトで「作成者別アーカイブインデックスページ」が自動作成されます。
http://wpdocs.sourceforge.jp/Author_Templates
gatespaceさま
お返事ありがとうございます。
「作成者別アーカイブインデックスページ」が自動作成されてどのようにすればいいのでしょうか?
理解不足で申し訳ありませんが、ご教授いただけると幸いです。
投稿者別アーカイブのウィジェットを有効化すればいいんじゃん、と思ったら、ウィジェットが…ない。メニューも自動で増えたりしてくれないので、初心者にはキツイですね。やっつけですが、こんなのでどうですか?
テーマの functions.php に以下を。
function mock_user_search() {
$atts = shortcode_atts(
array(
'include' => array(),
'exclude' => array()
), $atts, 'user_search');
$args = array(
'include' => is_array($atts['include']) ? $atts['include'] : array(),
'exclude' => is_array($atts['exclude']) ? $atts['exclude'] : array(),
'fields' => array(
'user_nicename',
'display_name',
'ID'));
$users = get_users($args);
if (!$users) return;
$form = '<form method="GET" action="' . home_url('/') . '">';
$form .= '<select name="author_name">';
foreach ($users as $user) {
$form .= '<option value="' . $user->user_nicename . '">'
. $user->display_name . '</option>';
}
$form .= '</select>';
$form .= '<input type="submit" value="検索">';
$form .= '</form>';
return $form;
}
add_shortcode('user_search', 'mock_user_search');
検索フォームがほしい場所で以下を記述 (投稿本文でっせ)
全べてのユーザを表示
[user_search]
ユーザを限定する場合
include->含めるユーザのIDを指定 exclude->除外するユーザのIDを指定
どちらもスペースで区切る 片方だけ指定でも OK
[user_search include="2 3 4" exclude="1"]
動作確認はとったけど、無保証。
訂正どす。
'include' => is_array($atts['include']) ? $atts['include'] : explode(' ', $atts['include'],
'exclude' => is_array($atts['exclude']) ? $atts['exclude'] : explode(' ', $atts['exclude'],
@kjmtsh さん
訂正どす。惜しかったので、直してみましたー :)
mock_user_search( $atts )
訂正どす。閉じかっこ
勝手に追加、 怒んないですよね :)
'who' => 'authors' );
function mock_user_search( $atts ) {
$atts = shortcode_atts(
array( 'include' => array(), 'exclude' => array() ), $atts, 'user_search' );
$args = array(
'include' => is_array( $atts[ 'include' ] ) ? $atts[ 'include' ] : explode( ' ', $atts[ 'include' ] ),
'exclude' => is_array( $atts[ 'exclude' ] ) ? $atts[ 'exclude' ] : explode( ' ', $atts[ 'exclude' ] ),
'fields' => array(
'user_nicename',
'display_name',
'ID' ),
'who' => 'authors' );
$users = get_users( $args );
if ( !$users ) return;
$form = '<form method="GET" action="' . home_url( '/' ) . '">';
$form .= '<select name="author_name">';
foreach ( $users as $user ) {
$form .= '<option value="' . $user->user_nicename . '">'
. $user->display_name . '</option>';
}
$form .= '</select>';
$form .= '<input type="submit" value="検索">';
$form .= '</form>';
return $form;
}
add_shortcode( 'user_search', 'mock_user_search' );
Nice catch! Thank you, nobita.
お礼とお返事、遅くなり申し訳ございません。
ログインできずにいました。。
無事上記のコードで解決しました。
皆様、ありがとうございました!