用于Wordpress的Ajax选项卡,用于在用户更改选项卡时加载和运行不同的短代码

时间:2018-01-13 12:10:28

标签: javascript php jquery ajax wordpress

只有当用户点击标签的标题时,如何执行放置在标签中的短代码。我们如何为五个标签执行此操作?我的目标是减少我网站的加载时间。因此,只有用户想要的内容必须在他点击选项卡时加载。

我确信最好的方法是使用Wordpress的admin-ajax.php。我搜索了很多。我已经找到了大部分代码(我认为)来创建AJAX选项卡。但是,当我解雇代码时,它并没有显示出来。相反,HTML告诉我们,AJAX没有。



$(document).ready(function() {
  $('.my_tabs a').click(function(e) {
    e.preventDefault();

    var tab_id = $('this').attr('id');


    $.ajax({
      type: "POST",
      url: "wp-admin/admin-ajax.php",
      dataType: 'html',
      data: ({
        action: 'my_tab_menu',
        id: tab_id
      }),
      success: function(data) {
        $('#my_tab' + tab_id).html(data);
      },
      error: function(data) {
        alert("Error!");
        return false;
      }

    });

  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="my_tabs">
  <a href="#my_tab1" id="my_tab_id_1">Tab 1</a>
  <a href="#my_tab2" id="my_tab_id_2">Tab 2</a>
  <a href="#my_tab3" id="my_tab_id_3">Tab 3</a>
  <a href="#my_tab4" id="my_tab_id_4">Tab 4</a>
  <a href="#my_tab5" id="my_tab_id_5">Tab 5</a>
</div>

<div class="my_section" id="my_tab1">
  <?php echo do_shortcode ('[shortcode-1]'); ?>
</div>

<div class="my_section" id="my_tab2">
  <?php echo do_shortcode ('[shortcode-2]'); ?>
</div>

<div class="my_section" id="my_tab3">
  <?php echo do_shortcode ('[shortcode-3]'); ?>
</div>

<div class="my_section" id="my_tab4">
  <?php echo do_shortcode ('[shortcode-4]'); ?>
</div>

<div class="my_section" id="my_tab5">
  <?php echo do_shortcode ('[shortcode-5]'); ?>
</div>
&#13;
&#13;
&#13;

我使用页面构建器将所有代码直接添加到页面中。所以,我没有将function.php用于我正在尝试实施的特定标签的add_action。

我在stackover上找到了类似帖子的所有代码: Ajax tabs (wordpress)

他们将template_parts调用到选项卡中。我想在哪里执行短代码。

我称之为编码bimbo。非常感谢所有帮助。

谢谢。如果你能够在这里读书,你应该度过愉快的一天。 :d

2 个答案:

答案 0 :(得分:1)

尝试

operator[][]

答案 1 :(得分:1)

好的,所以你无法按照放置template的方式实现它。只要echo shortcode浏览器呈现页面,就必须打印shortcode内容。您需要创建custom-page-template.php,创建页面,然后在点击shortcodetab或{{GET后,您需要发送POST处理程序1}}使用ajax的方法。

自定义模板中,您会收到[shortcode-1]。示例代码如下所示:

<?php
/*
Template Name: Shortcode Processor
*/
$current_shortcode = $_POST['shortcode_name'];
?>
<div id="shortcode-contents">
<?php echo do_shortcode($current_shortcode); ?>
</div>

现在您在Ajax Call中有响应。您现在可以在所需的选项卡中注入成功的html。