Alterar o tipo de postagem personalizada para hierárquico após ser registrado

9

Muito semelhante à pergunta anterior: Alterar o argumento 'reescrever' após o registro do tipo de postagem personalizado

Estou tentando tornar os produtos MarketPress hierárquicos - posso fazer isso invadindo os arquivos de plug-in, mas gostaria de ficar longe deles, se puder.

É possível alterar os argumentos de um tipo de postagem personalizado depois que ele é registrado, mas antes de todo o material de reescrita interna ter sido feito?

ATUALIZAÇÃO: Aqui está a solução

E como normalmente acontece, encontro a resposta alguns minutos depois de postar a pergunta ...

Então, aqui está o que eu fiz no arquivo functions.php do meu tema para resolver o meu problema:

function modify_products() {
    if ( post_type_exists( 'product' ) ) {

        /* Give products hierarchy (for house plans) */
        global $wp_post_types, $wp_rewrite;
        $wp_post_types['product']->hierarchical = true;
        $args = $wp_post_types['product'];
        $wp_rewrite->add_rewrite_tag("%product%", '(.+?)', $args->query_var ? "{$args->query_var}=" : "post_type=product&name=");
        add_post_type_support('product','page-attributes');
    }
}
add_action( 'init', 'modify_products', 1 );

Tudo funciona: hierarquia, reescrita, etc :)

ragulka
fonte
5
Ragulka, você pode remover o RESOLVIDO do seu título e postar sua solução como resposta. Após 24 horas, você poderá aceitá-lo. Isso facilita as pessoas que podem ter o mesmo problema / similar. Obrigado.
Stephen Harris
Bem-vindo ao WordPress Stack Exchange! Observe: este site não é o formato usual de fórum de suporte, mas usa um formato de pergunta e resposta , para criar uma base de conhecimento robusta. Perguntas e respostas são postadas separadamente e são votadas para cima e para baixo pela comunidade. O OP "aceita" a resposta que melhor resolveu a pergunta original. Portanto, como Stephen Harris disse: publique sua solução como resposta e aceite a resposta.
Chip Bennett
Ei, desculpe por isso. Na verdade, tentei responder minha própria pergunta, mas não consegui. Disseram-me para esperar 8 horas ou adicionar um comentário ou editar minha pergunta. Então eu fiz. Bem, acho que vou esperar mais 4 horas e depois posso responder minha pergunta.
ragulka

Respostas:

10

E como normalmente acontece, encontro a resposta alguns minutos depois de postar a pergunta ...

Então, aqui está o que eu fiz no arquivo functions.php do meu tema para resolver o meu problema:

function modify_products() {
    if ( post_type_exists( 'product' ) ) {

        /* Give products hierarchy (for house plans) */
        global $wp_post_types, $wp_rewrite;
        $wp_post_types['product']->hierarchical = true;
        $args = $wp_post_types['product'];
        $wp_rewrite->add_rewrite_tag("%product%", '(.+?)', $args->query_var ? "{$args->query_var}=" : "post_type=product&name=");
        add_post_type_support('product','page-attributes');
    }
}
add_action( 'init', 'modify_products', 1 );

Tudo funciona: hierarquia, reescrita, etc :)

ragulka
fonte