Intereting Posts
Боковая панель "Wrapper" Плагин / Виджет? Заголовок изображения в Magnific Popup для изображений, встроенных в сообщение Почему мой WordPress показывает 404 сообщение для 403 запрещенных каталогов? Как предотвратить изменение текста с использованием фильтра gettext (предположительно) функцией updateText () js на экране редактирования CPT Как изменить тему «Двадцать десять», чтобы удалить окно комментариев, когда страница использует определенный шаблон? Добавление новых сайтов в Multisite не будет зарегистрировано в Dashboard как назначить статус / метку для публикации? Как добраться до даты загруженного файла Активация многосайтового плагина (не активирована в сети), что происходит? Где появляются значки для медиафайлов Что касается сообщений Где находится папка wp-content / themes? Плагин для пользователей для создания собственных объявлений, таких как Google Adsense Как эхо-описание тега на loop-page.php с использованием WPeC 3.8 Настройки wordpress api add fields

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

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

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

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

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

вы хотите дезинфицировать название или 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