Intereting Posts
Использование page_navi с WP_Query Как я могу искать все плагины для поставщика-разработчика / autoload.php? Не перенаправляемая страница не была перенаправлена ​​должным образом при перенаправлении Использование wp_send_json для возврата HTML как использовать файл MO по умолчанию как я могу начать создание панели мониторинга в разделе сообщений wordpress admin Видео с помощью короткого кода видео всегда шириной 640 пикселей? Как использовать wordpress / php для обслуживания разных видео на основе типа пользовательского устройства? Как удалить_query_arg () для paginate_links () Удалите путь папки от wp_get_attachment_url, чтобы показать только имя файла. Такое же меню для разных таксономий для достижения различного контента get_template_part для каждого уровня таксономии Шаблон подстраницы Сохранять настраиваемый параметр URL на нескольких страницах Пользовательский тип сообщения с постоянной константой таксономии

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

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

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

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