Intereting Posts
Как удалить повторяющиеся сообщения определенной категории с помощью SQL Query? Такая же таксономия сливается под разными родителями в иерархической таксономии Фильтр для wp_embed_handler_youtube не работает Как получить значения параметров, установленные со всех сайтов в многоуровневой настройке? Требует ли WordPress, чтобы ваша тема отправки поддерживала несколько уровней меню? wp_enqueue_script () не работает Как получить категорию в классе элементов списка Как виджет должен ссылаться на то, что добавлено в пользовательские подменю или поля addmenu? Откройте односпальную почту WordPress в лайтбокс без заголовка и нижнего колонтитула Запретить создание тегов на странице публикации Как клонировать и локально запускать сеть для тестирования Как мне вызвать функцию для использования на странице? Могу ли я управлять контентом моего пользовательского сайта с помощью WordPress? Как заказать тип сообщения с meta_value_num и если meta_value_num не существует, то порядок по дате Создание отдельных страниц для профилей авторов и списков сообщений автором

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

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

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

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