我创建了一个快速函数和简短代码,允许我只包含登录用户内容:
function content_for_logged_in($atts,$content){
$logged_in_content = "";
if(is_user_logged_in()){
$logged_in_content = $content;
}
return $logged_in_content;
}
add_shortcode('logged-in-content','content_for_logged_in');但它不解析内容中的短代码,例如:
[logged-in-content]
Some test content...
[wpforms id="752"]
[/logged-in-content]在这种情况下,将显示wpforms短代码,而不是表单。
是否有办法改变我的功能,以便内容中的短代码将被解析?
谢谢你,斯科特
发布于 2020-02-28 07:04:16
您要查找的函数名为do_shortcode ( Wordpress 5.4中也有一个函数apply_shortcode,它也是这样做的)。法典页
就您的例子而言,这将起作用:
function content_for_logged_in($atts,$content){
$logged_in_content = "";
if(is_user_logged_in()){
$logged_in_content = do_shortcode($content);
}
return $logged_in_content;
}
add_shortcode('logged-in-content','content_for_logged_in');编码愉快!
发布于 2020-02-28 04:38:13
我找到了实现我现在需要的东西的方法..。
function content_for_logged_in($atts,$content){
$logged_in_content = "";
$embedded_shortcode = $atts['embedded_shortcode'];
if(is_user_logged_in()){
$logged_in_content = $content;
if(!empty($embedded_shortcode)) {
$logged_in_content .= do_shortcode('['.$embedded_shortcode.']');
}
}
return $logged_in_content;
}
add_shortcode('logged-in-content','content_for_logged_in');然后这个:
[logged-in-content embedded_shortcode="wpforms id=752"]
Use the form below to upload photos for the Photo Galleries page.
[/logged-in-content]我仍然感兴趣的是,是否有一种方法可以这样做,以便实际的短代码可以在封闭的短代码的$content区域内,以防有时我想这样做,这样我就可以将嵌入的短代码放在内容中的其他地方,或者可以在$content区域内执行多个短代码。
对于我当前的需要,上面的解决方案就能做到这一点。
https://wordpress.stackexchange.com/questions/359660
复制相似问题