以下のようなエリアページがあります。
http://www.example.com/area1
http://www.example.com/area2
各エリアページには、一般的なWPメニューがカテゴリを表示しています。説明する:
メニュー項目
- >カテゴリ1
- >カテゴリ2
以下のように私のパーマリンク設定を設定しました:
カスタム構造体:http://www.example.com/artiklar/%post_id%
だから今のところ私のカテゴリのURLは次のとおりです。
http://www.example.com/artiklar/category/category1
しかし、私の要件は、ユーザーがカテゴリページからカテゴリページcategory1を言うと仮定した場合ですarea1するとカテゴリURLは以下のようになります。
http://www.example.com/artiklar/category/category1?tag=area1
そしてカテゴリメニューがエリア2から訪問されるなら、それはそれであるべきです:
http://www.example.com/artiklar/category/category1?tag=area2
提案してください、私はウェブ上でこの種の構造を実装する方法を検索することによって何のアイデアも得られていません。
編集:
カテゴリURLにスラッグを追加することをより明確にするために(ユーザーがカテゴリリンクにアクセスするページから、そのページのスラッグがURLの最後にカテゴリURLに追加される)
カテゴリリンクをフィルタリングして、カスタム変数をカテゴリリンクに追加します。カテゴリリンクアドレスをフィルタするために get_term_link
フィルタを使用することができます。
これは非常に基本的な考え方です。
OPから取り出して、分類法category
のビルドに属する用語にのみカスタム変数を追加する必要があり、実際のページ上にあり、URLにページIDを値として追加する場合にのみ、と仮定します。それを正確に行うためのフィルタ関数を作成することができます。そして、 add_query_arg()
を使用して、新しいクエリ変数を追加できます。それをfrompage
と呼びます。 URL.
これが基本的な機能で、あなたが適当と思うように拡張したり変更したりすることができます。分かりやすくするためにコードにコメントを付けました。
add_filter( 'term_link', function ( $termlink, $term, $taxonomy )
{
// If this is not a page, return the unmodified term link
if ( !is_page() ) // Change this to what is specific to your needs
return $termlink;
// Only target the build in taxonomy 'category'
if ( $taxonomy !== 'category' ) // Adjust to your exact taxonomy
return $termlink;
// Get the current viewed paged id
$current_id = get_queried_object_id();
// Make sure we actually have a value, if not, return the term link
if ( $current_id == 0 )
return $termlink;
// If we reached this point, we are good to go and should add our query var to the URL
$termlink = esc_url( add_query_arg( ['frompage' => $current_id], $termlink ) );
return $termlink;
}, 10, 3 );
その後、次のように値を取得できます。
$value = filter_input( INPUT_GET, 'frompage', FILTER_VALIDATE_INT );
if ( $value )
echo $value;
ここではfilter_input
の値を取得するために$_GET
を使用しています。これは、そのfilter_input
が渡された値が存在するかどうかを検証し、それを返すかfalseを返すためです。また、値に使用するフィルタを渡すこともできます。この場合はFILTER_VALIDATE_INT
です。結局のところ、それは$_GET( 'frompage
)よりずっと良くて安全な方法です。