如果找不到快捷代码,是否显示文本消息?

时间:2019-03-30 作者:Nicolas Logerot

我正在使用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
}
我还没有找到一种方式来回复这样的消息:“对不起,这里没有画廊”。

有人有解决方案吗?

当客户有图库需要批准时Client has no galerie to approve

如果客户没有画廊可供批准,或者他已经批准了他的照片Client has a gallery to approve

2 个回复
最合适的回答,由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:

  1. do_shortcode()
  2. [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;

相关推荐

PHP:对REST请求进行身份验证?

我确实使用REST api为正在开发的插件创建了一些自定义端点。它工作得很好,但现在我想保护这些请求:我不需要外部用户(EDIT: 我指的是远程请求),以便能够进行查询。但我只找到有关javascript身份验证的文档(REST API Handbook).如何使用PHP实现身份验证(此处为WP 5.1.1)?谢谢