web-dev-qa-db-fra.com

Wordpress Rewrites - Comment puis-je passer une variable au type de message personnalisé?

Je cherche une réécriture wordpress qui me permette de passer une requête var. J'ai un type de message personnalisé qui produit des URL comme ceci:

example.com/custom-post-slug/custom-post-title/

mon but est d'avoir

example.com/custom-post-slug/custom-post-title/cid/10/

Passer la valeur 10 dans cid

Aucune suggestion?

1
MikeGWP

Vous pouvez utiliser add_rewrite_endpoint pour ajouter une requête et générer les règles de réécriture nécessaires:

function wpd_cid_endpoint() {
    add_rewrite_endpoint( 'cid', EP_PERMALINK );
}
add_action( 'init', 'wpd_cid_endpoint' );

N'oubliez pas de vider les règles de réécriture après les avoir modifiées. Vous pouvez le faire rapidement en visitant la page Paramètres> Permaliens dans admin.

1
Milo

Essayez ceci dans votre init callback :

add_rewrite_rule(
    '^custom-post-type-slug/([^/]*)/cid/([^/]*)/?',
    'index.php?custom-post-type-slug=$matches[1]&cid=$matches[2]',
    'top'
);

add_rewrite_tag('%cid%', '([^&]+)');

Vous pouvez ensuite utiliser ce qui suit pour obtenir la valeur de votre variable cid:

global $wp_query;
$wp_query->query_vars['cid']

J'ai utilisé les fonctions suivantes:

http://codex.wordpress.org/Rewrite_API/add_rewrite_rulehttp://codex.wordpress.org/ Rewrite_API/add_rewrite_tag

0
iambriansreed

Vous devez créer une règle de réécriture personnalisée qui mappe non seulement le post slug, mais également la valeur cid. Consultez cet article:

http://www.prodeveloper.org/create-your-own-rewrite-rules-in-wordpress.html

Et la documentation pertinente du Codex:

http://codex.wordpress.org/Rewrite_APIhttp://codex.wordpress.org/Rewrite_API/ add_rewrite_rule

Je suppose que vous ne voulez pas utiliser de chaînes de requête , car dans ce cas, il serait aussi simple que d'utiliser cette URL:

example.com/custom-post-slug/custom-post-title/?cid=10

et obtenir la valeur de cette façon:

$cid=isset($_GET['cid'])?$_GET['cid']:false;

Cependant, gardez à l'esprit que .../param_name/param_value/syntax n'est pas la meilleure en termes de sémantique et de référencement. Les URL sont supposées être hiérarchiques.

Certains utilisent/param_name: param_value/à la place, bien que la solution la plus "pure" consiste à utiliser? Param_name = param_value.

0
guidod