do_action in conditional

时间:2015-10-08 作者:seravifer9

我正在使用“收件箱状态”插件。我可以用它来显示未读的电子邮件。

<?php do_action( \'inbox_status_count\', \'inbox-unread\' ); ?>
我想在条件中使用此代码。如果不止一封,则仅显示电子邮件的数量。

if ( 0 < did_action( \'inbox_status_count\', \'inbox-unread\' ) )
    echo "<span class=\'new badge\'>";
    echo do_action( \'inbox_status_count\', \'inbox-unread\' );
    echo "</span>";
为什么不工作?

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

请注意did_action 仅接受one 输入参数:操作挂钩的名称。

您的if 判决也不清楚。

我认为你不想使用did_action 在这里,它不会告诉你电子邮件的数量。

您可以尝试以下操作:

if ( $unread = do_shortcode( \'[input-unread]\' ) )
    printf( "<span class=\'new badge\'>%s</span>", $unread );
或者跳过昂贵的do_shortcode 直接使用快捷码回调进行解析:

if( 
       class_exists( \'IS_Inbox_Status\' ) 
    && $unread = IS_Inbox_Status::get_instance()->get_count( \'inbox-unread\' )
)   
    printf( "<span class=\'new badge\'>%s</span>", $unread );
请注意,这是未经测试的。