web-dev-qa-db-ja.com

分類法と投稿タイプの値をクエリに渡るようにURLを書き換えますにはどうすればよいですか。

だから私は約6つのカスタム投稿タイプのサイトを持っています。これらの投稿タイプの3つは単一のカスタム分類法に添付されています。

私はサイドバーのlist_catsと ../%post_type%/%taxonomy%/ のようなURLを吐き出して、これを taxonomy-%taxonomy%に持っていってもらいたいのです。 php templateと %post_type% の結果のみを返します。

現在の %post_type% を読み、 taxonomy-%taxonomy%.php ファイルで正しくスタイルを設定する条件式を作成できます。 %post_type% をクエリに渡すようにURLを変更するための最も効果的な方法についての指示が必要です。

前もって感謝します。明確な答えがないまま2、3日探した。

だからここに私の微妙な解決策の試みがありますがそれでも一つの大きな失敗です これは rlmseo.comで見つけられた議論に基づいています antここで答え。

クエリで使用する変数に投稿タイプを追加しようとしています:

practice-areasは分類法です。taxonomy-practice-areas.phpで投稿タイプで分類法を絞り込むために使用できる変数を追加しようとしています

function add_query_vars($aVars) {
    $aVars[] = "cust_pt_var";    // represents the name of the custom post type as shown in the URL
    return $aVars;
}

// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');      

function add_rewrite_rules($aRules) {
    $aNewRules = array('practice-areas/([^/]+)/pt/([^/]+)/?$' => 'index.php?practice-areas=$matches[1]&cust_pt_var=$matches[2]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules')

書き換えでクエリ変数を渡そうとしています

書き換え時に、投稿の種類(ポートフォリオとクライアント)、および実践領域の分類用語をクエリに追加しようとしています。

function add_rewrite_rules($aRules) {
    $aNewRules = array('portfolio/practice-areas/([^/]+)/?$' => 'index.php?post_type=portfolio&practice-areas=$matches[1]');
    $aNewRules = array('clients/practice-areas/([^/]+)/?$' => 'index.php?post_type=clients&practice-areas=$matches[1]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules')
5
jroakes

わかりましたので、書き直しをすべてまとめて$ _POSTソリューションを使用しました。これは本当にうまく機能し、私のURLにはまったく問題ありません。ここで practice-areas は分類法であり、リンクは taxonomy-practice-areas.php テンプレートファイルを引っ張ります。目的地(またはここのテンプレートファイル内)で、$ query_stringを変更して検索を特定の投稿タイプに絞り込むことができます。 Yeeeee-ha !!

行き先のページに入れる:

    <?php
    $myvar = $_POST['formVar'];
    query_posts($query_string . '&post_type='.$myvar );
    ?>

元のページに入れる:

<!-- The Form: Put this form somewhere on the page: -->

    <form method=post name="post_form" action="">
    <input type="hidden" name="formVar" value="">
    </form>


<!-- The URL: Here I am assigning the Destination URL to a variable.  This can be whatever you want the destination page to be. -->

    <?php                       
    $dest_url = get_bloginfo('url').'/practice-areas/'. $category->slug;
    ?>


<!-- The Link: Here we are assigning 'portfolio' to  'formVar' and setting the form 'action' to the $dest_url value. The title stuff is irrelevant here-->

    <a href="" onclick="document.post_form.formVar.value='portfolio'; document.post_form.action ='<?php $dest_url; ?>'; document.post_form.submit(); return false" title ="<?php sprintf( __( "View all posts in %s" ), $category->name ); ?>" >
1
jroakes