Intereting Posts
Автоматически создавать отсутствующие изображения Как переименовать ссылку профиля на странице wp-admin Администрирование шаблона Ошибка после обновления WP 4.8 Предотвращение нападения грубой силы Как получить все сообщения, относящиеся к определенному названию категории? Удаление столбца Meta из страниц категорий? Скрыть панель администратора определенного типа сообщений отображать многократные сообщения из таксономии на одной странице Выполните действие по удалению блога WPMU Изменение пользовательских страниц управления пользователями WordPress register_post_type Недопустимый тип сообщения Taxonomy.php, как показывать сообщение только в текущей таксономии с помощью wp_query? Доступ к текущей родительской позиции и подкатегории Почему моя кнопка предварительного просмотра работает правильно? Получить автор и выдержку из 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