ワードプレスでのクエリ変数の受け渡し


16

著者ページは2つあり、1つには約5つの投稿が表示されます。次に、すべての投稿となる別のページを設定しようとしています。moreauthorposts.phpというテンプレートを作成し、author変数をこのページに渡そうとしています。問題は、domain.com / more-author-posts?author = johndoeを渡すと削除されることです。この値を取得するにはどうすればよいですか?これはワードプレスでも可能ですか?WP RewriteがURL構造をジャッキングしていることは、どういうわけかわかりません。

私はもう試した:

get_query_var('author')

これを読んでみましたが、運がありませんでした:

http://codex.wordpress.org/Query_Overview

提案?

ありがとう。

回答:


21

私はそれauthorが組み込まれていると確信しているので、のようなものを使用してくださいauthor_morequery_vars最初にその変数を追加する必要があります。例:

// add `author_more` to query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

次に、more-author-posts.phpテンプレートで次のように呼び出します。

if ( get_query_var( 'author_more' ) )
{
    // do your stuff
}

更新

これは、次のURlの例/ユースケースで機能します。

http://example.com/index.php?author_more=value

ただし、これを派手なURlとして使用する場合は、書き換えルールを追加する必要があります。

add_action('init','add_author_more_rewrite_rule');
function add_author_more_rewrite_rule()
{
    add_rewrite_rule(
        'more-author-posts/(\d*)$',
        'index.php?author_more=$matches[1]',
        'top'
    );
}

これで次のように使用できます

http://example.com/more-author-posts/value

それでは、クエリ変数をfunctions.phpに追加しました。次に、他のコードを著者の投稿に追加しました。これらを通過させる正しいURL構造は何でしょうか?pagedは/ page / 2の形式を使用しますが、more-author-posts / more_author / johndoeを実行しても動作しないようです。
codeisforeva

私は答えを更新しました
-Bainternet

問題は、varsをindex.phpに渡そうとしないことです。インデックスとはまったく異なるように見えるので、開発したカスタムテンプレートにそれらを渡そうとしています。そのため、moreauthor.php?author_more = johndoeに値を渡すと、動作しないようです。ここで何か間違っていますか?
codeisforeva

@בנייתאתריםは非常に明確な答えのように見えます!@codeisforevaテンプレートファイルを直接呼び出すべきではありませんか?index.phpはwordpressの単なるルートファイルであり、すべての書き換えルールがそこを通過するはずです。
ゴールデンアップル

1
@codeisforeva:index.php書き換えルールは、テンプレートファイルでindex.phpはなく、WordPressのルートディレクトリにありindex.phpます。template_includeフィルタにフックすることで、表示するテンプレートを選択できます。
ヤンファブリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.