Hinzufügen von Metawerten zu Permalink

Ich habe Publikationen und möchte einfach Jahr und Monat zum Permalink hinzufügen. Derzeit wird das Jahr und der Monat der Veröffentlichung als Meta-Wert dem Beitrag hinzugefügt. Ich habe Veröffentlichungen als benutzerdefinierten Posttyp eingerichtet und Taxonomie für den bestimmten Titel der Publikation erstellt. Ich möchte, dass der Permalink:

Veröffentlichungen / Veröffentlichungstitel / Jahr-veröffentlicht / Monat-veröffentlicht / Name-of-Post

Ich möchte einfach die Metawerte für das Veröffentlichungsjahr und den Monat dem Permalink hinzufügen.

Bis jetzt konnte ich das Jahr und den Monat veröffentlichen und es zur URL hinzufügen, aber leider bekomme ich immer 404, wenn ich versuche auf Posts zuzugreifen. Ich denke, dass ich mich mit einem meiner Schritte falsch verhalte …

Jede Hilfe wäre willkommen.

Dies sind die Schritte, die ich in der folgenden Reihenfolge ausgeführt habe:

  1. Da ich der URL den Veröffentlichungsjahr und den Veröffentlichungsmonat hinzugefügt habe, habe ich gelesen, dass ich WordPress auf diese benutzerdefinierten Querystring-Variablen aufmerksam machen musste. Ich habe die folgenden functionen hinzugefügt, um diese benutzerdefinierten Variablen zu registrieren:

    function pubyear_register_rewrite_tag() { add_rewrite_tag( '%pubyear%', '([0-9]{4})'); } add_action( 'init', 'pubyear_register_rewrite_tag'); function pubmonth_register_rewrite_tag() { add_rewrite_tag( '%pubmonth%', '([0-9]{2}'); } add_action( 'init', 'pubmonth_register_rewrite_tag'); 

2) Jahr und Monat zur Permalink-Struktur hinzugefügt:

 add_filter('post_type_link', 'pub_term_permalink', 10, 4); function pub_term_permalink($permalink, $post, $leavename, $sample) { if ( false !== strpos( $permalink, '%publication-title%/%pubyear%/%pubmonth%' ) ) { //get the publication-title $publicationtype = get_the_terms( $post->ID, 'publication-type' ); //get the year of the publication $pubyear = date('Y', get_post_meta($post->ID, 'pub_date', true)); //get the month of the publication $pubmonth = date('m', get_post_meta($post->ID, 'pub_date', true)); $rewritecode = array( '%publication-type%', '%pubyear%', '%pubmonth%', $leavename? '' : '%postname%', ); $rewritereplace = array( array_pop($publicationtype)->slug, $pubyear, $pubmonth, $post->post_name ); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } return $permalink; } 

3) Hinzufügen von Umschreibungsregeln:

 function pub_add_rewrite_rules() { add_rewrite_rule( '^([^/]*)/([0-9]{4})/([0-9]{2})/([^/]+)?', 'publications/index.php?pagename=$matches[3]', 'top' ); } add_action( 'init', 'pub_add_rewrite_rules' ); 

4) Sicherstellen, dass der benutzerdefinierte Post-Typ registriert ist und dieses Rewrite-Array enthält:

 'rewrite' => array ( 'slug' => 'publications/%publication-type%/%pubyear%/%pubmonth%', 'with_front' => false ), 

Solutions Collecting From Web of "Hinzufügen von Metawerten zu Permalink"

War in der Lage, dies zum functionieren zu bringen. Ich dachte, ich würde aufschreiben, was wir in der Hoffnung getan haben, dass es jemandem in der Zukunft helfen wird (oder jemand kann mir Feedback geben, wie ich es verbessern kann!)

  1. Registrierte benutzerdefinierte Rewrite-Regeln

     add_action('init', 'pub_rewrite_rules'); function pub_rewrite_rules() { global $wp_rewrite; $wp_rewrite->add_rewrite_tag( '%pubyear%', '([0-9]{4})', 'pubyear='); $wp_rewrite->add_rewrite_tag( '%pubmonth%', '([0-9]{2})', 'pubmonth='); } 
  2. Permalink-Struktur erstellt

      function pub_permalink($permalink, $post, $leavename) { if ( false !== strpos( $permalink, '%publication-type%/%pubyear%/%pubmonth%' ) ) { $publicationtype = get_the_terms($post->ID, 'publication-type'); $pubyear = date('Y', get_post_meta($post->ID, 'publication_date', true)); $pubmonth = date('m', get_post_meta($post->ID, 'publication_date', true)); $rewritecode = array( '%publication-type%', '%pubyear%', '%pubmonth%', $leavename? '' : '%postname%', ); $rewritereplace = array( array_pop($publicationtype)->slug, $pubyear, $pubmonth, $post->post_name ); $permalink = str_replace($rewritecode, $rewritereplace, $permalink); } return $permalink; } 
  3. Registrierte Taxonomie

  4. Registrierter benutzerdefinierter Post-Typ hat ein Array geschrieben, um Folgendes einzuschließen:

      'slug' => 'publications/%publication-type%/%pubyear%/%pubmonth%', 
  5. Lege die Umschreibregeln auf die Seite Permalink-Einstellungen und speichere oder flush_rewrite_rule ()