仅当仅自定义帖子类型时才清理标题

时间:2017-01-11 作者:user3067368

我想清理特定自定义帖子类型的标题。我已经创建了一个过滤器来清理标题。它对其他帖子类型有何影响。在进行了大量搜索之后,我成功地编写了一个操作,使我能够在管理面板的特定页面上执行功能。但我不能在行动中启动过滤器。

因此,我们非常感谢您的帮助。

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

2 个回复
最合适的回答,由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. 3790
wp_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

相关推荐

删除具有实际标题的SANITIZE_TITLE_WITH_DASSES函数

求你了,我真的需要帮助。下面的代码是在我的网站上将搜索查询保存为标记的代码,但它将标题替换为“-”,请问有什么方法可以使标记标题名称保持搜索状态?。function addsometags() { //Don\'t do anything if we\'ve already got 20 tags $posttags = get_the_tags(); $count=0; if ($posttags) { foreach($posttags as $tag