J'ai des pages de zone comme ci-dessous:
http://www.example.com/area1
http://www.example.com/area2
Sur chaque page de zone, les menus wp courants affichent des catégories . Pour illustrer:
Articles de menu:
-> catégorie1
-> catégorie2
J'ai défini mes paramètres de lien permanent comme ci-dessous:
Structure personnalisée: http://www.example.com/artiklar/%post_id%
Donc pour l'instant, mon URL de catégorie est:
http://www.example.com/artiklar/category/category1
Mais mes exigences sont lorsque la page de catégorie de visite utilisateur suppose category1 à partir de la page area say area1 alors l'URL de la catégorie devient comme ci-dessous:
http://www.example.com/artiklar/category/category1?tag=area1
Et si le menu de catégorie est visité de la zone 2, alors il devrait être:
http://www.example.com/artiklar/category/category1?tag=area2
S'il vous plaît suggérer, je ne me fais pas une idée en cherchant sur le web comment mettre en œuvre ce type de structure.
EDIT:
En essayant de préciser que je veux ajouter un slug de page à l'URL de la catégorie (page à partir de laquelle l'utilisateur visitera le lien de la catégorie, le slug de cette page sera ajouté à l'URL de la catégorie à la fin de l'URL)
Vous voudriez filtrer le lien de catégorie pour ajouter la variable personnalisée au lien de catégorie. Vous pouvez utiliser le filtre get_term_link
pour filtrer l'adresse du lien de catégorie.
Voici une idée très basique:
Supposons que nous, tirés de OP, il ne soit nécessaire d’ajouter la variable personnalisée qu'aux termes appartenant à la taxonomie intégrée dans la variable category
, et uniquement lorsque nous sommes sur une page réelle et que nous souhaitons ajouter l’ID de la page comme valeur à l’URL, nous pouvons créer une fonction de filtre pour faire exactement cela, et en utilisant add_query_arg()
, nous pouvons ajouter une nouvelle variable de requête, appelons-la frompage
, à la URL.
Voici une fonction de base que vous pouvez étendre et modifier à votre guise. J'ai commenté le code pour le rendre facile à suivre
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 );
Vous pouvez ensuite récupérer la valeur comme suit:
$value = filter_input( INPUT_GET, 'frompage', FILTER_VALIDATE_INT );
if ( $value )
echo $value;
Notez que j'ai utilisé filter_input
ici pour obtenir la valeur $_GET
. En effet, filter_input
valide si la valeur transmise existe et la renvoie ou renvoie false. De plus, vous pouvez passer un filtre à utiliser sur la valeur, dans ce cas FILTER_VALIDATE_INT
. Dans l’ensemble, c’est un moyen bien meilleur et plus sûr que $_GET( 'frompage
) `