it-swarm.dev

WordPress vlastní příspěvek typy přestávky permalink na téma přecetat

To je docela zvláštní problém. Vytvářím vlastní příspěvek typu WordPress v mém souboru themes.php v následujícím formátu:

add_action('init', 'product_register');

function product_register() {
$args = array(
    'label' => __('Products'),
    'singular_label' => __('Product'),
    'public' => true,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => true,
    'supports' => array('title', 'editor', 'thumbnail')
);

register_post_type( 'product' , $args );
}

To mi dává následující strukturu url pro mé produkty: http://www.mywebsite.com/products/product-name .

Nicméně, pokud přepnu na jiné téma (TwentyTen) a pak přepnout zpět WordPress zapomene permalink, nyní, když jsem se procházet na URL výše jsem si 404 stránku.

Opravdu zvláštní věc, kterou jsem si všiml, je, že můžu tento problém vyřešit tak, že přejdu do Nastavení -> Permalinks in admin. Tento problém dočasně opraví až do odinstalace/přeinstalace dalšího tématu.

Má někdo jiný podobný problém?

1
jnthnclrk

Nová struktura permalinků se uloží pouze tehdy, když je voláno WP_Rewrite::flush_rules() . Protože se jedná o nákladnou operaci (výpočet nových pravidel a jejich uložení do databáze), neměli byste to dělat na každém volání init, ale pouze při změně struktury. Vlastní typ příspěvku však musí být registrován při každém volání init, protože je uložen v poli PHP v paměti, nikoli v databázi (což je důvod, proč zapomněl vlastní příspěvek při přepnutí motivů: permalink struktura stále existovala, ale odkazovala se na vlastní typ příspěvku, který nebyl načten, což způsobuje chybu).

3
Jan Fabry