WordPress Rewrites – Wie kann ich eine Variable an Custom Post Type übergeben?

Ich suche nach einem WordPress Neuschreiben, das mich eine Abfrage var übergeben lassen wird. Ich habe einen benutzerdefinierten Beitragstyp, der URLs wie folgt erzeugt:

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

mein Ziel ist es zu haben

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

Übergeben Sie den Wert 10 an cid

Irgendwelche Vorschläge?

Solutions Collecting From Web of "WordPress Rewrites – Wie kann ich eine Variable an Custom Post Type übergeben?"

Sie können add_rewrite_endpoint , das eine add_rewrite_endpoint hinzufügt und die erforderlichen Umschreibungsregeln generiert:

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

Vergessen Sie nicht, die Regeln zu überschreiben, nachdem Sie die Regeln geändert haben. Sie können dies schnell tun, indem Sie die Seite Einstellungen> Permalinks im Admin aufrufen.

Sie müssten eine benutzerdefinierte Rewrite-Regel erstellen, die nicht nur den post-slug, sondern auch den cid-Wert abbildet, siehe folgenden Artikel:

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

Und die relevante Codex-Dokumentation:

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

Ich gehe davon aus, dass Sie keine Abfragezeichenfolgen verwenden möchten , da dies in diesem Fall so einfach wäre wie die Verwendung dieser URL:

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

und den Wert auf diese Weise erhalten:

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

Beachten Sie jedoch, dass die … / param_name / param_value / Syntax nicht die beste in Bezug auf Semantik und SEO ist. URLs sollen hierarchisch sein.

Einige verwenden / param_name: param_value / stattdessen, obwohl die “reinste” Lösung wäre zu verwenden? Param_name = param_value.

Versuchen Sie dies in Ihrem 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%', '([^&]+)'); 

Sie können dann Folgendes verwenden, um den Wert Ihrer cid-Variablen abzurufen:

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

Ich habe folgende functionen benutzt:

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