在特定页面上隐藏私有前缀

时间:2016-09-09 作者:nicklas bryntesson

仅在一个名为“members”的特定页面上,尝试有条件地隐藏页面标题前面的“private”前缀。

我在函数中使用了此代码。php隐藏所有页面上的前缀。

function title_format($content) {
return \'%s\';
}

add_filter(\'private_title_format\', \'title_format\');
add_filter(\'protected_title_format\', \'title_format\');
试图以各种方式与if is\\u页面(“members”)挂钩,但到目前为止,我得到的唯一结果是致命错误。

2 个回复
最合适的回答,由SO网友:Jeremy Ross 整理而成

这对我有用。其中一个关键是,如果内容不符合条件,您必须确保不更改地传递内容。

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());
假设您正在为该页面创建自定义模板,则这只适用于成员页面上的特定页面模板。

我希望这能为你提供一些方法。

SO网友:Alberto Ice

无过滤器的简单解决方案是打印标题,其中包含:

<?php echo $post->post_title; ?>
这将打印没有任何前缀的原始标题。

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();