如何在_Content过滤器中获取帖子URL?

时间:2017-07-25 作者:NerdOfLinux

在WordPress中,我在函数中使用函数。php仅在用户未登录时不显示某些帖子(按类别):

   function my_filter( $content ) {

    $categories = array(
        \'news\',
        \'opinions\',
        \'sports\',
        \'other\',
    );

    if ( in_category( $categories ) ) {
        if ( is_logged_in() ) {
            return $content;
        } else {
            $content = \'<p>Sorry, this post is only available to members</p> <a href="gateblogs.com/login"> Login </a>\';
            return $content;
        }
    } else {
        return $content;
    }
}
add_filter( \'the_content\', \'my_filter\' );
我使用一个插件(对我的问题不重要),但基本上,我可以使用https://gateblogs.com/login?redirect_to=https%3A%2F%2Fgateblogs.com%2Ftechnology%2Flinux-tutorials%2Fsending-mail-from-server 成功登录后重定向到页面。如何获取帖子的URL并将其应用到注册链接中。

注意:该函数最初来自this question.

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

我知道怎么用get_the_permalink() 功能:

/* Protect Member Only Posts*/
function post_filter( $content ) {

    $categories = array(
        \'coding\',
        \'python\',
        \'linux-tutorials\',
        \'swift\',
        \'premium\',
    );
    if ( in_category( $categories ) ) {
        if ( is_user_logged_in() ) {
            return $content;
        } else {
            $link = get_the_permalink();
            $link = str_replace(\':\', \'%3A\', $link);
            $link = str_replace(\'/\', \'%2F\', $link);
            $content = "<p>Sorry, this post is only available to members. <a href=\\"gateblogs.com/login?redirect_to=$link\\">Sign in/Register</a></p>";
            return $content;
        }
    } else {
         return $content;
    }
}
add_filter( \'the_content\', \'post_filter\' );
请注意str_replace 因为我必须更改链接才能使插件工作。

SO网友:Johansson

您可以使用get_the_permalink() 结合is_single():

add_filter( \'the_content\', \'my_filter\' );

function my_filter( $content ) {

     // Check if we\'re inside the main loop in a single post page.
    if ( is_single() && in_the_loop() && is_main_query() ) {
        return $content . get_the_permalink();
    }

    return $content;
}

结束

相关推荐

什么是phpBB?它是不是类似于我可以在WordPress中使用的插件?

我对phpBB做了一些研究。它说这是一个论坛插件,但没有提到这个插件可以在Wordpress中使用。然后我看到this forum 比较phpBB和Wordpress插件的地方(看起来两者仍然不同)。我在Wordpress开发StackExchange中看到了几个关于phpBB的问题,但没有一个回答我的问题。所以,如果我买this theme, 那么我可以在Wordpress中使用它吗?如果没有,那么哪个平台可以用来编辑主题?代码是PHP,还是可以使用HTML和CSS?对不起,问题太多了。