Özel Yazı Tipi URL Yeniden Yazma


32

Portföy projelerim için özel bir gönderi türü belirledim. Bunun için ana URL adres:/projects/

Şimdi de blog yazılarımı kalıcı /articles/*/bağlantı yapısı için kalıcı bağlantı olarak ayarladım. Bu, bir portföy projesini görmeye gittiğimde URL’nin değiştiği anlamına geliyor/articles/projects/project-name/

Yalnızca projelerim için özel posta türü için kalıcı bağlantıları yeniden yazmanın bir yolu olması gerektiğini biliyorum . Ancak URL slug ilanında sözdizimi bilmiyorum - alabileceğim herhangi bir yardım için teşekkür ederiz!

Yanıtlar:


42

Özel gönderi türünü kaydettiğinizde, yeniden yazma kuralının mevcut URL yapısı ile hazırlanmaması gerektiğini belirtmeniz gerekir.

Kısacası, bu, register_post_typeçağrınızdaki bu hattın :

'rewrite' => array('slug' => 'projects'),

Buna dönüşmeli:

'rewrite' => array('slug' => 'projects','with_front' => false),

Daha fazla bilgi için, kodeks girişindekirewrite argümana göz atın.register_post_type

düzenleme: yalnızca kodu güncelledikten sonra, Ayarlar> Permalinks'i ziyaret ederek yeniden yazma kurallarını temizlediğinizden emin olun. Aksi halde eski bağlantıları görmeye devam edersiniz.


parlak teşekkür ederim! Açıklığa kavuşturmak için, kuralları silmek için tek yapmam gereken Ayarlar-> Permalinkler sayfasına gidip "Değişiklikleri Kaydet" e tıklamak, doğru mu?
— Jake

4
Değişiklikleri kaydetmenize bile gerek yok. Yalnızca Permalinks ayarları sayfasını açmak yeterlidir (yani, .htaccess dosyanız yazılabilirse. Değilse, değişiklikleri kaydet seçeneğine basın ve .htaccess'in döndürdüğü kodu el ile kopyalayın)
— 0x61696f

2
Bu benim için işe yaramıyor. Projelerim yayınları hala devam ediyor example.com/projects/title-of-post. Permalinks sayfasını da ziyaret ettim. Buna ne sebep olabilir? İçimde herhangi bir yeniden yazma kuralı yok htaccess.
— Desi

Vay, teşekkürler bu kısmıydı! Permalinks sayfasını ziyaret etmek işe yaramadı, ancak geçerli permalink ayarlarının TASARRUFU işe yaradı :)
— Alexander Taubenkorb

Yeniden yazma kurallarını temizlemeden bazı şeyleri değiştirmeye devam ettim. Bahşiş için teşekkürler!
— Tan-007

15

Bu sorunu tam anlamıyla 3 gün önce yaşadım, sonra wp.tutsplus.com adresinde bir dizi tökezledi . Sorunuzu daha iyi karşılamak için kendi kodumu değiştirdim, ancak seriyi takip ettikten sonra bıraktım. Ayrıca, bunun test edilmediğini unutmayın.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

Teorik olarak, $projects_structuredeğişkende depolanan URL’de ne istersen onu değiştirebilirsin , ne kullandığımda ne var ne var.

İyi şanslar ve her zaman olduğu gibi - geri döndüğünüzden ve nasıl çalıştığını bize bildirdiğinizden emin olun! :)


1
Sadece bağlantılardan oluşan cevaplar, bu kaynakların gelecekte varlığını durdurabileceği (ve muhtemelen olacağı gibi) genellikle yararsızdır. İçeriği özetleyin.
— chrisguitarguy

Yeterince adil, düzgün bir revizyon üzerinde çalışacağım.
— cmegown

11
Şimdi, cevabım, özel bir yazı tipi URL'sini başarıyla yeniden yazan bir üretim ortamında sahip olduğum çalışma koduna benzer bir kod içeriyor. Umarım daha yararlı olacağını kanıtlar!
— cmegown
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.