我正在使用do_shortcode
函数在页面中添加短代码。但我想在显示之前检查一下这个短代码是否存在。如果用户没有图库,我想显示这样的消息:“对不起,这里没有图库”。
这是我的PHP:
<?php
/**
* galeries content
*/
function iconic_galeries_endpoint_content() {
echo /* Template Name: Client Area */
get_header();
?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<article>
<header class="entry-header">
<h1><?php _e( \'Vos galeries photos.\', \'my-theme\' ); ?></h1>
</header>
<div class="entry-content">
<?php
$current_user = wp_get_current_user();
if ( isset( $current_user->user_email ) ) {
echo \'<p>\' . sprintf( __( \'%s, this is your galleries\', \'my-theme\' ), $current_user->display_name ) . \':</p>\';
echo do_shortcode( \'[picu_list_collections email="\' . $current_user->user_email . \'"]\' );
}
else {
echo \'<p>\' . sprintf( __( \'Please <a href="%s">log in</a> to see this page\', \'my-theme\' ), wp_login_url( get_permalink() ) ) . \'.</p>\';
}
?>
</div>
</article>
</main>
</div>
<?php
}
我还没有找到一种方式来回复这样的消息:“对不起,这里没有画廊”。
有人有解决方案吗?
当客户有图库需要批准时
如果客户没有画廊可供批准,或者他已经批准了他的照片
最合适的回答,由SO网友:Qaisar Feroz 整理而成
do_shortcode()
返回筛选出短代码的内容。我们可以检查返回值并相应地显示相应的消息。
$output = do_shortcode( \'[picu_list_collections email="\' . $current_user->user_email . \'"]\' );
// the shortcode returns an empty <ul> tag, if there is no gallery
// https://plugins.trac.wordpress.org/browser/picu/trunk/frontend/includes/picu-template-functions.php#L464
if($output == \'<ul class="picu-collection-list"></ul>\') echo "Nothing here";
else echo $output;
我希望这能有所帮助!
References:
- do_shortcode()
- [picu_list_collections]
SO网友:cjbj
这是一段奇怪的代码。显然,用户可以上传库,但您的代码片段不显示上载代码,因此无法知道它是如何存储的,因此无法访问以确定它是否存在。
据推测picu_list_collections
shortcode知道如何访问库,但如果没有库,您希望它返回不同的输出。这意味着修改shortcode function itself.
如果只能修改当前函数,则不能回显结果,而是将其存储在变量中。然后,您可以对其执行测试以建立库。返回的代码反映库的存在,例如,通过测试img
-标签像这样:
$gall = do_shortcode( \'[picu_list_collections email="\' . $current_user->user_email . \'"]\' );
if (false=strpos($gall,\'<img\')) echo \'Sorry no here\' else echo $gall;