Jenis Kiriman Kustom Tautan / Tulis Ulang tidak berfungsi dengan segera

9

Memukul dinding bata dengan yang berikut ini:

Saya sudah:

  • 1 jenis pos kustom dipanggil cpt_community
  • 1 taksonomi ubahsuaian disebut tax_community

Jika saya menetapkan 'rewrite' => truedalam pendaftaran CPT saya, maka permalinks untuk entri untuk CPT ini adalah dari bentuk http://<domain>/cpt_community/test_item/, dan saya mendapatkan 404 saat browsing ke sana.

Jika saya atur 'rewrite' => false, maka permalinks adalah http://<domain>/?cpt_community=test_item/, dan ini berfungsi dengan baik.

Jadi, saya jelas melakukan sesuatu yang salah / bodoh - pertanyaannya adalah, apa?

[Memperbarui]

  • Setelah setiap perubahan, saya menjalankan aturan dengan membuka Pengaturan> Permalinks (dan menyimpan)
  • Setelah meninggalkan semuanya sendirian selama satu jam, semuanya sudah mulai bekerja dengan benar - jadi mengapa penundaan itu?

Kode

Registrasi 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' );

Registrasi Taksonomi Kustom

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' );
anu
sumber
1
Anda telah memurnikan penulisan ulang dengan mengunjungi halaman permalinks dan menyimpan?
Milo
@milo - yup. Menariknya, setelah berjalan pergi selama satu jam dan kemudian kembali, 'permalink cantik' sekarang bekerja - saya akan memperbarui pertanyaan dan membingkainya sebagai 'mengapa penundaan'
anu
Apakah Anda menggunakan plugin caching? Apakah ini bekerja lebih cepat dengan semua plugin lain dinonaktifkan? (Hanya membuat tersangka keluar dari jalan)
Jan Fabry
@jan - tanpa plugin caching. Masalahnya adalah bahwa saya tidak dapat mereproduksi perilaku ini - itu terjadi beberapa kali sekarang dan hilang setelah tetapi tanpa tindakan khusus (yang dapat saya katakan) untuk benar-benar memperbaikinya.
anu

Jawaban:

7

Gunakan fungsi flush_rewrite_rules () untuk mengatur aturan penulisan ulang baru, tetapi tidak dengan kode Anda di init-hook, hanya pada plugin atau tema aktivasi! Lihat lebih banyak di posting saya: http://wpengineer.com/2044/custom-post-type-and-permalink/

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

Aturan siram hanya pada aktivasi (dan penonaktifan). Jangan lakukan itu pada kait lain.

register_activation_hook()
bueltge
sumber
4

Cukup buka Pengaturan> Permalinks untuk mem-flash aturan. Tidak diperlukan kode. Anda tidak perlu memperbarui struktur, cukup membuka halaman admin yang berfungsi

Jukov
sumber
tetapi Anda kemudian harus mengunjungi halaman itu setiap kali terjadi kesalahan. Dengan menggunakan flush_rewrite_rules (); Fungsi berarti mereka memerah tanpa kebutuhan nyata untuk interaksi.
Alex Older