在管理面板中自定义Postype特定更改

时间:2014-03-03 作者:user3067368

我有一小段代码,它正是我所需要的。但我想将其使用限制为仅一种自定义帖子类型(CPT)。

add_filter(\'sanitize_title\', \'my_custome_slug\');
function my_custome_slug($title) {
    return str_replace(\'-\', \'\', $title);
}
我尝试了以下代码,但没有成功:

function my_custome_slug($title){ 
global $post;
    if ( $post->post_type == \'customposttype\') {
         return str_replace(\'*\', \'-\', $title);
         }
    } 
add_filter(\'sanitize_title\', \'my_custome_slug\'); 
非常感谢您的帮助。

EDIT:

对不起,我的帖子不清楚。

当我们第一次在任何新帖子中输入标题时,Wordpress会在URL中将“帖子标题”更改为“帖子标题”。我最初的问题是,对于特定的自定义帖子类型,我需要删除帖子URL中的“-”。所以他们将成为“posttitles”

enter image description here

我认为问题出在使用“sanitize\\u title”上,因为我在管理面板中找到的每一个自定义特定于帖子内容加载的示例都是有效的。但在这些示例中使用sanitize\\u title后,结果只会在title字段下生成一个空白url。

我共享的第一个代码已经在这样做了。我试图将它的功能限制为特定的自定义posttype,但它根本不起作用。

我需要这个功能,我看到它已经有可能了。我只需要将其限制为特定的自定义帖子类型。这是一个后端问题(由于某些内部结构),而不是前端问题。否则我会用htacess试试。所以我们的主要目标是管理面板上的wordpress发布页面。

1 个回复
SO网友:kaiser

筛选器总是需要返回某些内容。因此,在第二个示例中,您应该尝试return $title;if 声明,这样就不会打断其他帖子。

add_filter( \'sanitize_title\', \'my_custome_slug\' );
function my_custome_slug( $title )
{ 
    return ( \'customposttype\' === $GLOBALS[\'post\']->post_type )
        ? str_replace( \'*\', \'-\', $title )
        : $title;
}
我不太清楚你为什么要把电话挂到sanitize_title. 在我看来,把帖子保存得不同和using the save_post hook to alter the title.

编辑

正如之前猜测的和评论中的评论所述(上面只是在互联网上找到的一个随机片段),下面是如何实际更改帖子标题的更新。

功能get_the_title() 由函数调用the_title() 其中一个应该用于输出帖子、页面和自定义帖子类型的标题。get_the_title() 返回筛选器内的标题:

return apply_filters( \'the_title\', $title, $id );
因此,最简单的方法就是在上面添加一个回调,并在那里更改输出:

add_filter( \'the_title\', \'wpse136615_title_str_replace\', 10, 2 );
function wpse136615_title_str_replace( $title, $id )
{
    $post = get_post( $id );
    return ( \'your_custom_post_type_name\' === $post->post_type )
        ? str_replace( \'*\', \'-\', $title )
        : $title;
}
只需更换your_custom_post_type_name 使用真正的自定义帖子类型名称(请参阅中使用的参数register_post_type() 如果您不确定名称)。

结束