WordPress修改标题前的"私密"和"密码保护"

如果你将文章的公开度设置为"私密"和"密码保护",这些文章就会在标题的前面自动添加"私密:"和"密码保护:"或"Protected: "。

去掉标题前的"私密:"和"密码保护:"

将如下代码添加到主题的 functions.php 中

add_filter( 'private_title_format', 'diy_private_title_format' ); //私密
add_filter( 'protected_title_format', 'diy_private_title_format' ); //密码保护

function diy_private_title_format( $format ) {
	return '%s'; //这个不能省略
}

注:return '%s' 表示直接返回标题,也可以根据自己的需要,分别为 私密 和 密码保护 撰写不同的函数,定义返回的标题格式即可。

替换标题前的“私密:”和“密码保护:”

将如下代码添加到主题的 functions.php 中

//私密
add_filter( 'private_title_format', 'diy_private_title_format' );
function diy_private_title_format( $format ) {
	return '[私密] %s';
}

//密码保护
add_filter( 'protected_title_format', 'diy_protected_title_format' );
function diy_protected_title_format( $format ) {
	return '[密码保护] %s';
}

拓展一下

我们针对不同的分类,做不同的提示文字,这里需要处理两个参数,上述代码就要稍作调整,以"密码保护"文章为例

add_filter( 'protected_title_format', 'diy_protected_title_format', 10, 2 );
function diy_protected_title_format( $format, $post ) {
	$post = get_post( $post );
	$title = isset( $post->post_title ) ? $post->post_title : ''; //读取文章标题
	$id    = isset( $post->ID ) ? $post->ID : 0; //读取文章ID
	
	$category = get_the_category( $id );
	$category_id = $category[0]->cat_ID; //分类ID
	$category_name = $category[0]->cat_name; //分类名称
	
	$txt1 = '[私密]';
	$txt2 = '';
	if( $category_id==3 || $category_id==1943 ){
		$txt1 = '[付费文档]';
	}
	
	return $txt1 .' %s'. $txt2;
}

这里的 $post 有如下数据可操作:

Object
(
    [__PHP_Incomplete_Class_Name] => WP_Post
    [ID] => 1557
    [post_author] => 1
    [post_date] => 2014-10-10 16:21:13
    [post_date_gmt] => 2014-10-10 08:21:13
    [post_content] => 文章内容
    [post_title] => 文章标题
    [post_excerpt] => 文章摘要
    [post_status] => private
    [comment_status] => open
    [ping_status] => closed
    [post_password] => 
    [post_name] => 1557
    [to_ping] => 
    [pinged] => 
    [post_modified] => 2020-04-10 14:40:18
    [post_modified_gmt] => 2020-04-10 06:40:18
    [post_content_filtered] => 
    [post_parent] => 0
    [guid] => https://yangjunwei.com/?p=1557
    [menu_order] => 0
    [post_type] => post
    [post_mime_type] => 
    [comment_count] => 0
    [filter] => raw
    [platform] => 0
)

这里的 $category 有如下数据可操作:

Array
(
    [0] => __PHP_Incomplete_Class Object
        (
            [__PHP_Incomplete_Class_Name] => WP_Term
            [term_id] => 3
            [name] => 微信开发
            [slug] => weixin
            [term_group] => 0
            [term_taxonomy_id] => 3
            [taxonomy] => category
            [description] => 
            [parent] => 0
            [count] => 302
            [filter] => raw
            [cat_ID] => 3
            [category_count] => 302
            [category_description] => 
            [cat_name] => 微信开发
            [category_nicename] => weixin
            [category_parent] => 0
        )

)