Изменить пользовательский тип сообщения на иерархический после регистрации

9

Очень похоже на предыдущий вопрос: изменение аргумента «переписать» после регистрации пользовательского типа записи

Я пытаюсь сделать продукты MarketPress иерархическими - я могу сделать это, взломав файлы плагинов, но я бы хотел остаться в стороне от них, если смогу.

Можно ли изменить аргументы пользовательского типа поста после его регистрации, но до того, как все внутреннее переписывание будет выполнено?

ОБНОВЛЕНИЕ: вот решение

И, как это обычно бывает, я нахожу ответ через несколько минут после публикации вопроса ...

Итак, вот что я сделал в файле functions.php моей темы, чтобы решить мою проблему:

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

Все работает: иерархия, переписывание и т. Д. :)

ragulka
источник
5
Рагулька, можешь удалить решенное из своего заголовка и опубликовать свое решение в качестве ответа. Через 24 часа вы сможете его принять. Это просто облегчает людям, которые могут иметь ту же / аналогичную проблему. Спасибо.
Стивен Харрис
@ragulka добро пожаловать в WordPress Stack Exchange! Обратите внимание: этот сайт не является обычным форматом форума поддержки, а использует формат вопросов и ответов для создания надежной базы знаний. Вопросы и ответы публикуются отдельно и поддерживаются сообществом. ОП «принимает» ответ, который лучше всего разрешает исходный вопрос. Итак, как сказал Стивен Харрис: опубликуйте свое решение в качестве ответа , а затем примите этот ответ.
Чип Беннетт
Эй, прости за это. На самом деле я пытался ответить на свой вопрос, но не смог, мне сказали подождать 8 часов или добавить комментарий или отредактировать свой вопрос. Так я и сделал. Ну, я подожду еще 4 часа и смогу ответить на мой вопрос.
ragulka

Ответы:

10

И, как это обычно бывает, я нахожу ответ через несколько минут после публикации вопроса ...

Итак, вот что я сделал в файле functions.php моей темы, чтобы решить мою проблему:

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

Все работает: иерархия, переписывание и т. Д. :)

ragulka
источник