Отменить регистрацию типа публикации из дочерней темы
Я пытаюсь отменить регистрацию типа сообщения из дочерней темы, но я не смог этого сделать, код в funcions.php файл родительской темы выглядит примерно так:
add_action( 'init', 'mc_projects' );
function mc_projects() {
register_post_type( 'project', array(
// Default options....
) );
}
Что я пытался сделать в своей дочерней теме, так это удалить действие mc_project из крючка инициализации следующим образом:
remove_action('init', 'mc_projects', 11);
Но это не сработало, даже когда я установил приоритет на какое-то более высокое значение, я делаю что-то не так?
5 answers
Попробуйте выполнить следующие действия в файле функций дочерней темы.
add_action( 'init', 'remove_mc_projects' );
function remove_mc_projects() {
remove_action('init', 'mc_projects');
}
Это помогло мне.
add_action( 'after_setup_theme','remove_project_custom_init', 100 );
function remove_project_custom_init() {
remove_action( 'init', 'project_custom_init');
}
Заслуга принадлежит www.jasonpaul.net
Вот еще одно решение, немного банальное -
В моей родительской теме мой пользовательский тип записи создается следующим образом:
if (!(function_exists('my_post_type')))
{
function my_post_type()
{
...
}
}
Затем в моей дочерней теме я просто повторно объявляю функцию пустой -
function my_post_type() { }
Надеюсь, это поможет! Это мой первый вклад в подобный форум, поэтому, пожалуйста, извините за любые правила форматирования, которые я нарушил.
Никто из вышеперечисленных не работает для меня в Wordpress 4.9.7, но это решает мою проблему
function delete_post_type(){
unregister_post_type( 'portfolio' );
}
add_action('init','delete_post_type', 100);
Это сработало для меня.
function override_parent() {
remove_action( 'init', 'mc_projects', 0 );
}
add_action ('after_setup_theme','override_parent');