无法创建两个短代码,一个用于已登录用户,另一个用于访问者

时间:2020-07-05 作者:023023

所以我尝试创建一个代码(在functions.php) 根据用户是登录还是注销(访问者),显示来自快捷码的小部件内容。我成功地为登录用户显示了内容,但没有为访问者显示,因为我需要在同一个小部件中发生所有事情。我尝试的方法是使用两种不同的短代码,如下所示:

[member_only]You are logged in.[/member_only]
[visitor_only]Login / Register[/visitor_only]
如果用户已登录,则会显示

[member_only]You are logged in.[/member_only]
如果用户已注销,它将显示

[visitor_only]Login / Register[/visitor_only]
我的代码:

/* BEGIN LOGIN BUTTON WIDGET SHORTCODE */


function member_only_shortcode($atts, $content = null)
{
    if (is_user_logged_in() && !is_null($content) && !is_feed()) {
        return $content;
    }
}
add_shortcode(\'member_only\', \'member_only_shortcode\');

function visitor_only_shortcode($atts, $content = null)
{
    if (is_user_logged_in() && !is_null($content) && !is_feed()) {
        return "";
    }
else {
    return $content; }

}
add_shortcode(\'visitor_only\', \'visitor_only_shortcode\');


/* END LOGIN BUTTON WIDGET SHORTCODE */

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

正如您在问题中所说的,代码对我来说很好,并且完全符合您的建议。

为了使其正常工作,我必须确保我的WP post编辑器处于代码编辑器模式,因为HTML或可视化编辑器可能会产生额外的问题:

enter image description here

这就是我在post editor中的测试代码在测试成功时的样子:

<!-- wp:html -->
<p>this is the content</p>

<p>more content 
[member_only]You are logged in.[/member_only]
[visitor_only]Login / Register[/visitor_only]
</p>

<!-- /wp:html -->
您可以通过添加! 对于第一个条件前面的“not”,则结构与第一个短代码相同,并且不需要else:

function visitor_only_shortcode($atts, $content = null)
{
    if (!is_user_logged_in() && !is_null($content) && !is_feed()) {
       return $content;
    }
}

add_shortcode(\'visitor_only\', \'visitor_only_shortcode\');

相关推荐

在哪里可以找到CPT块模板的文档?(PHP)

我已经搜索了一天,但似乎还没有找到正确的文档,说明在尝试用php配置CPT块模板时可以传递给核心组件的参数。这就是我所拥有的,但我想通过嵌套按钮和自定义html等进一步实现这一点。但我找不到我需要的文档。\'template\' => array( array( \'core/columns\', array(), array( array( \'core/column\', array("width" => "60&quo