我是否可以使用_POSTS过滤器覆盖内容数组?

时间:2017-01-19 作者:Jeremy D

因此,我对WordPress还很陌生,作为一项学习练习,我正在尝试创建一个会员插件,允许网站根据用户类型限制对页面的访问。

我正在做的第一步就是尝试删除页面内容并显示一条“仅限会员区”消息。起初,我打算尝试注入JavaScript,以删除<*div id="content">, 但我不确定是否需要自定义主题来使用该div id。

我正在尝试使用过滤器the_content 重写内容。我可以通过不返回内容来完全删除内容,但它只显示一条“找不到内容”消息。因此,我现在尝试通过执行以下操作来重写数组本身$content[\'post_content\'] = "Members only"; . 而不是更改post_content 它会在屏幕上打印两次。

对于我正在尝试做的事情,我可能走上了完全错误的道路,但是,我应该如何重新编写$content 数组,以便WordPress显示我希望它显示的虚假内容?

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

这个the_content 过滤器将用于此。此过滤器允许您更改the_content()get_the_content():

add_filter( \'the_content\', \'wpse_members_only\', 20 );
function wpse_members_only( $content ) {
    // If user is not logged in, show restricted content message.
    // Change this conditional statement based on how you want to check for
    // membership status. I\'d suggest using capabilites, e.g. current_user_can( $capability , $object_id );
    if ( ! is_user_logged_in() ) {
        $content = __( \'Sorry, this content is reserved for members only.\', \'text-domain\' );
    }

    return $content;
}