Tipo di post personalizzato Permalink / Rewrite non funziona immediatamente


9

Colpire un muro di mattoni con il seguente:

Io ho:

  • 1 tipo di post personalizzato chiamato cpt_community
  • 1 tassonomia personalizzata chiamata tax_community

Se ho impostato la 'rewrite' => truemia registrazione CPT, i permalink a una voce per questo CPT sono del tipo http://<domain>/cpt_community/test_item/e ottengo un 404 quando lo sfoglio.

Se ho impostato 'rewrite' => false, quindi i permalink sono http://<domain>/?cpt_community=test_item/e questo funziona bene.

Quindi, sto ovviamente facendo qualcosa di sbagliato / stupido - la domanda è: cosa?

[Aggiornare]

  • Dopo ogni modifica sto scaricando le regole andando su Impostazioni> Permalink (e salvando)
  • Dopo aver lasciato tutto da solo per un'ora, le cose hanno iniziato a funzionare correttamente, quindi perché il ritardo?

Codice

Registrazione CPT

function community_post_type() {
  $labels = array('name'  => 'Community');

   $args = array(
      'labels' => $labels,
      'public' => true,
      'publicly_queryable' => true,
      'show_ui' => true,
      'show_in_menu' => true,
      'query_var' => true,
      'rewrite' => false,
      'capability_type' => 'post',
      'has_archive' => true,
      'hierarchical' => false,
      'menu_position' => null,
      'has_archive' => true,
      'supports' => array('title','editor','excerpt','custom-fields','comments','revisions','thumbnail','author','page-attributes')
   ); 

  register_post_type('cpt_community', $args);
}  
add_action( 'init', 'community_post_type' );

Registrazione tassonomia personalizzata

function community_tax_type() {
  register_taxonomy(
    'tax_community',
    'cpt_community',
     array( 'hierarchical' => false,
       'label' => 'Community Content Type',
       'show_ui' => true,'query_var' => true,
       'rewrite' => true,
       'singular_label' => 'Community Content Type',
       'capabilities' => array('assign_terms' => 'edit_community_tags')
       )
   );
   # allow roles to add community taxonomy tags to a community CPT
   $roles = array("subscriber","contributor","author","editor","administrator");

   foreach ($roles as $role_name) {
     $role = get_role($role_name);
     $role->add_cap("edit_community_tags");
   }   
}
add_action( 'init', 'community_tax_type' );

1
hai scaricato prima le riscritture visitando la pagina dei permalink e salvando?
Milo,

@milo - yup. È interessante notare che, dopo essersi allontanati per un'ora e poi tornare indietro, i "graziosi permalink" ora funzionano - aggiornerò la domanda e la inquadrerò come "perché il ritardo"
anu

Usi un plug-in di cache? Funziona più velocemente con tutti gli altri plugin disabilitati? (Sto solo togliendo di mezzo i soliti sospetti)
Jan Fabry,

@jan - nessun plug-in di cache. Il problema è che non riesco a riprodurre questo comportamento: è successo un paio di volte e se ne va dopo, ma senza un'azione specifica (che posso dire) per risolverlo.
anu,

Risposte:


7

Usa la funzione flush_rewrite_rules () per impostare nuove regole di riscrittura, ma non con il tuo codice su init-hook, solo su plugin di attivazione o tema! Vedi di più nel mio post: http://wpengineer.com/2044/custom-post-type-and-permalink/

global $wp_rewrite;
$wp_rewrite->flush_rules();

Scarica regole solo all'attivazione (e disattivazione). Non farlo su nessun altro gancio.

register_activation_hook()

4

Basta andare su Impostazioni> Permalink per mostrare le regole. Non è necessario alcun codice. Non è necessario aggiornare la struttura, basta aprire quella pagina di amministrazione per fare il lavoro


ma devi quindi visitare quella pagina ogni volta che si verifica un errore. Usando il flush_rewrite_rules (); funzione significa che vengono arrossati senza reale necessità di interazione.
Alex Older,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.