Intereting Posts
Перемещение jQuery в нижний колонтитул без использования де-регистра в WordPress Скрыть сообщение полностью и все еще добираться до него через cURL Скрыть элементы управления Shortcode по умолчанию на странице Load На странице индекса и случайных сообщениях требуется принудительное обновление, чтобы показать новый контент. Отключить сжатие gpress wordpress? Использование функциональных возможностей WordPress для разработки Настройка пользовательской темы Как создать многостраничную страницу администратора и получить ее с помощью $ _GET или что-то еще? Заказ Индивидуальный цикл типа по пользовательскому полю (datepicker) Стили ссылок на страницы панели администратора Template Tag "template_directory" потянув неправильный путь Запланированное событие не запускается в полночь Создание пользовательского типа персонализации изображений? Правильный крючок для W3TC определяет или динамически отключает общий кэш w3 Cookie бесплатный домен не работает

Санитировать заголовок только в том случае, если только пользовательский тип сообщения

Я хочу деактивировать название определенного типа пользовательских сообщений. Мне удалось создать фильтр, который санирует названия. Как бы это ни повлияло на остальные типы сообщений. После большого поиска мне удалось написать действие, которое позволяет мне выполнять функции на определенных страницах на панели администратора. Но я не могу снимать фильтры в действиях.

Поэтому любая помощь приветствуется.

function check_cpt( $hook_suffix ){ $cpt = 'custom_post_type'; if( in_array($hook_suffix, array('post-new.php', 'post.php') ) ){ $screen = get_current_screen(); if( is_object( $screen ) && $cpt == $screen->post_type ){ echo'I'm only visible on custom post type'; die; //add_filter( 'sanitize_title', 'url_sanitizer', 10, 3 ); //above filter doesnt work } } } add_action( 'admin_enqueue_scripts', 'check_cpt'); 

Вышеуказанное действие работает так, как я предполагал. Когда-либо я не могу запустить фильтр. Это функция фильтра

 function url_sanitizer( $title, $raw_title, $context) { $new_title = $raw_title; $new_title = str_replace( ' ', '_', $new_title ); $new_title = str_replace( '-', '_', $new_title ); return $new_title; } 

вы хотите дезинфицировать название или post_name (slug)?
если вы хотите отфильтровать post_name, вы можете проверить фильтр wp_unique_post_slug или использовать фильтр wp_insert_post_data для фильтрации всех данных post перед вставкой или обновлением в db.

 add_filter( "wp_unique_post_slug", "url_sanitizer", 10, 4 ); function url_sanitizer( $slug, $post_ID, $post_status, $post_type ) { // get original title by $post_ID if needed eg. get_the_title($post_ID) if( $post_type == "your_cpt" ) { $slug= str_replace( ' ', '_', $slug); $slug= str_replace( '-', '_', $slug); } return $slug; } 

Справка:
wp_unique_post_slug задокументирован в wp-includes / post.php Линия № 3790
wp_insert_post_data https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

если вы хотите отфильтровать post_name, вы можете проверить фильтр wp_unique_post_slug или использовать фильтр wp_insert_post_data для фильтрации всех данных post перед вставкой или обновлением в db.

 add_filter( "wp_unique_post_slug", "url_sanitizer", 10, 4 ); function url_sanitizer( $slug, $post_ID, $post_status, $post_type ) { // get original title by $post_ID if needed eg. get_the_title($post_ID) if( $post_type == "your_cpt" ) { $slug= str_replace( ' ', '_', $slug); $slug= str_replace( '-', '_', $slug); } return $slug; } 

Ссылка: wp_unique_post_slug задокументирован в wp-includes / post.php Линия № 3790 wp_insert_post_data https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data