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

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()

4

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.