这对我有用。其中一个关键是,如果内容不符合条件,您必须确保不更改地传递内容。
function title_format($content) {
if (is_page(\'members\')) :
return \'%s\';
else :
return $content;
endif;
}
add_filter(\'private_title_format\', \'title_format\');
add_filter(\'protected_title_format\', \'title_format\');
不过,这只适用于包含大量“成员”的页面,而且听起来您想在“成员”页面上显示页面标题列表,并删除其中的前缀。那是唯一的地方吗?成员单击链接后,是否仍要省略特定页面标题上的Private:和Protected:前缀?
如果是这样,一种方法是将所有受保护的页面作为父页面的子页面移动。使用上面的代码,但修改条件以确定这些页面是否是成员页面的子页面。
另一种方法是在将页面模板循环到页面时过滤页面模板上的标题。一个我重新调整用途的函数csstricks:
function the_title_trim($title) {
$title = attribute_escape($title);
$findthese = array(
\'#Protected:#\',
\'#Private:#\'
);
$replacewith = array(
\'\', // What to replace "Protected:" with
\'\' // What to replace "Private:" with
);
$title = preg_replace($findthese, $replacewith, $title);
return $title;
}
在页面模板中,您将显示如下标题:
echo the_title_trim(get_the_title());
假设您正在为该页面创建自定义模板,则这只适用于成员页面上的特定页面模板。
我希望这能为你提供一些方法。