我想清理特定自定义帖子类型的标题。我已经创建了一个过滤器来清理标题。它对其他帖子类型有何影响。在进行了大量搜索之后,我成功地编写了一个操作,使我能够在管理面板的特定页面上执行功能。但我不能在行动中启动过滤器。
因此,我们非常感谢您的帮助。
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;
}
最合适的回答,由SO网友:Kudratullah 整理而成
是否要清理标题或post\\u名称(slug)
如果要筛选post\\u名称,可以选中wp_unique_post_slug
过滤器,或者您可以使用wp_insert_post_data
filter,用于在数据库中插入或更新之前过滤所有post数据。
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 Line No. 3790wp_insert_post_data
https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data
SO网友:khan
如果要筛选post\\U名称,可以选中wp\\U unique\\U post\\U slug filter,也可以使用wp\\U insert\\U post\\U data filter在数据库中插入或更新之前筛选所有post数据。
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\\u unique\\u post\\u slug记录在wp includes/post中。php行号3790wp\\U insert\\U post\\U数据
https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data