it-swarm.com.de

Benutzerdefinierte Taxonomie und Post-Slug-Permalink

Ich habe eine benutzerdefinierte Taxonomie und einen benutzerdefinierten Beitragstyp. Ich strebe die folgende Permalink-Struktur an:

{custom taxonomy}/{custom taxonomy term}/{custom post slug}

Oder zumindest

{custom taxonomy term}/{custom post slug}

Ich habe derzeit

{%category%}/{%postname%}, aber keine Würfel.

Angenommen, ich habe:

  • eine Taxonomie statesund ein Taxonomiebegriff newyorkname__
  • ein benutzerdefinierter Beitragstyp jobsmit einem Beitrag, der den Slug wordpress-developer enthält

Ich versuche zu erreichen:

  • states/newyork: ein Archiv aller jobsin newyorkname__, das funktioniert.
  • states/newyork/wordpress-developer: Die Seite des benutzerdefinierten Posts, die die Taxonomie und den Begriff als Basis für den Permalink verwendet.

Das Ziel ist es, von states/newyork (Liste der "Jobs") zu navigieren und in den einzelnen Beitrag zu fließen, ohne von der bisherigen Permalink-Struktur abzuweichen, also states/newyork/wordpress-developer

Probleme aufgetreten:

  • states/newyork/wordpress ergibt einen 404
  • newyork/wordpress-developer leitet zu jobs/wordpress-developer weiter

Gewünschtes Ergebnis:

  • states/newyork/wordpress-developer landet auf der benutzerdefinierten Beitragstypseite

PS - keine neue Jobbörse aufbauen, nur als Beispiel :)


aktuelle Taxonomie & Post Type Register Hook:

function register() {
  register_taxonomy('state', 'district', array(
    'labels' => array(
      'name' => 'States',
      'singular_name' => 'State',
      'search_items' => 'Search States',
      'all_items' => 'All States',
      'parent_item' => 'Parent State',
      'parent_item_colon' => 'Parent State:',
      'edit_item' => 'Edit State',
      'update_item' => 'Update State',
      'add_new_item' => 'Add New State',
      'new_item_name' => 'New State',
      'menu_name' => 'States'
    ),
    'public' => true,
    'show_admin_column' => true,
    'hierarchical' => true,
    'query_var' => true,
    'rewrite' => array(
      'slug' => 'states',
      'with_front' => false
    )
  ));

  register_post_type('district',
    array(
      'labels' => array(
        'name' => 'Districts',
        'singular_name' => 'Districts'
      ),
      'hierarchical' => true,
      'supports' => array('title', 'page-attributes'),
      'public' => true,
      'has_archive' => 'states',
      'rewrite' => array(
        'with_front' => false,
        'slug' => 'states/%show_category%'
      )
    )
  );
}
1
Atticus

Ich konnte das lösen, indem ich eine Umschreiberegel definierte:

function rewrite_rules($rules) {
  $newRules = array();
  $newRules['states/(.+)/(.+?)$'] = 'index.php?district=$matches[2]';
  return array_merge($newRules, $rules);
}
add_filter('rewrite_rules_array', __NAMESPACE__ . '\\rewrite_rules');
1
Atticus