Do_action(),则尽管有密码保护,iFrame仍会显示

时间:2015-06-26 作者:Jaeeun Lee

我正在使用高级自定义字段和内容保护器插件来保护通过事件日历插件显示的eventbrite票证注册的iframe。我相信我正在用Content Protector短代码包装显示iframe的部分,但即使在输入密码之前,它也会显示出来。如何使iframe仅在输入密码时显示?

<?php
  $password = get_post_custom_values(\'password\');

  if(!empty($password)){
  echo do_shortcode("[content_protector password=". "\'".$password[0]."\']". do_action( \'tribe_events_single_event_after_the_meta\' ). "[/content_protector]");
  } else {
    do_action( \'tribe_events_single_event_after_the_meta\' );
  }
?>

2 个回复
SO网友:Otto

do_action 不返回文本,只执行操作。所以,打电话do_action( \'tribe_events_single_event_after_the_meta\' ) 在您的do_shortcode 调用there将导致在短代码之前输出iframe。

SO网友:TheDeadMedic

从@Otto开始,您需要捕获动作的输出,然后通过快捷码传递:

ob_start();
do_action( \'tribe_events_single_event_after_the_meta\' );
$calendar = ob_get_clean();

$password = get_post_custom_values( \'password\' );

if( ! empty( $password ) ) {
    echo do_shortcode( "[content_protector password=\'{$password[0]}\']{$calendar}[/content_protector]" );
} else {
    echo $calendar;
}

结束

相关推荐

允许登录用户执行外部PHP脚本

我需要在WP外部调用一个PHP脚本,我想利用WP的凭据,以便只有登录的用户才能访问此脚本。我曾尝试在外部PHP脚本中嵌入此代码,但无法使用(其中XXX是域名): require(\'/var/www/vhosts/xxx.xxx.xxx/httpdocs/wordpress/wp-blog-header.php\'); if ( !is_user_logged_in () ) { //the script exits if the user is not logged