在源代码中隐藏ACF,直到单击“显示”按钮

时间:2017-02-07 作者:Michael Rogers

我正在寻找一种在前端隐藏AFC(高级自定义字段)内容的方法,直到用户单击“显示”按钮。

我不想使用CSS(显示:无)方法。ACF内容不应出现在页面的源代码上,只能在用户单击后加载。

我怎样才能做到这一点?

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

你需要$.ajax() 单击时字段的内容。

简而言之:

在页面模板中

<?php
global $post;
$post_id = $post->ID;
?>
<button class="acf-get-content-button">Let\'s see that content</button>
<div id="acf-content-wrapper" data-id="<?php echo $post_id; ?>"></div>
JS公司

(function($) {
  $(\'.acf-get-content-button\').click(function(e){
    e.preventDefault();
    var $contentWrapper = $( \'#acf-content-wrapper\' );
    var postId = $contentWrapper.data( \'id\' );

    $.ajax({
      url: "/wp-content/plugins/my-custom-plugin/public/field-ajax.php",
      type: "POST",
      data: {
        \'post_id\': postId
      },
    })
      .done(function( data ) {
        $contentWrapper.append( data );
      });
  });
})(jQuery);
字段ajax。php

<?php
define(\'WP_USE_THEMES\', false);
require_once(\'../../../../wp-load.php\');

$post_id = $_POST["post_id"];
$content = get_field( \'field\', $post_id );

echo $content;
这段代码需要定制以供您使用,因此您需要进行更多的研究。

注意,我将ajax脚本放在一个自定义插件中。这是我的建议,但一些安全插件(至少是iThemes security)可以选择在插件文件夹中禁用运行PHP,这会破坏这一点。

相关推荐