【问题标题】:Querying a function in functions.php?查询functions.php中的函数?
【发布时间】:2023-04-07 15:29:01
【问题描述】:

我有一个 jQuery 代码来检查用户何时接近页面底部。但这不是问题。这个 jQuery 将发送一个 AJAX 请求,提供一些关于当用户靠近页面底部时要加载的内容的详细信息。代码现在看起来有点像这样:

$("<div>").load('?ajax=y&offset=something', function() {

    $(".empty-div").append($(this));

    setTimeout(function(){ console.log('after', $(document).height()); }, 0);
    setTimeout(function(){ console.log('after', $(window).height()); }, 0);


});

我的主要问题是我不知道要查询什么或如何将信息发送到functions.php 中的PHP 函数。例如,我现在有这个作为我的 PHP 函数(直到它工作):

function get_posts_page() {


if(isset($_GET['offset'])) {
     echo"Hello!";
}

}

我知道 wordpress 有 add_action 和所有这些,但我不知道我会应用什么作为动作到任一函数以使 PHP 接收 Javascript 发送的数据。是否有解析所有函数的 URL 或其他东西?感谢您提前提供任何帮助。那么如何在我的主题目录中的functions.php中将数据从Javascript获取到PHP函数?

【问题讨论】:

    标签: php javascript jquery wordpress


    【解决方案1】:

    我刚刚制作了一个视频,向您展示如何在 WordPress 中使用 add_action 请求。你可以watch it here

    这是我的 javascript

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
    <script>
    
    $('#branding img').click(function() {
    
      $.post('<?php bloginfo('siteurl') ?>/wp-admin/admin-ajax.php', {
        action: 'my_unique_action',
        offset: 5
      }, function(data) {
        $('#content').prepend('<p>' + data + '</p>');
      });
    
    });
    
    
    </script>
    

    还有我在functions.php使用的php

    // Make sure it runs when the user is logged in,
    // and when they are not.
    add_action('wp_ajax_my_unique_action', 'get_offset');
    add_action('wp_ajax_nopriv_my_unique_action', 'get_offset');
    
    function get_offset() {
      if( isset($_POST['offset']) ) {
        echo 'Your ajax request was successful. Here was your offset: <strong>' . $_POST['offset'] . '</strong>';
      }
    
      die;
    }
    

    参考:http://codex.wordpress.org/AJAX_in_Plugins

    【讨论】:

      【解决方案2】:

      您正在尝试从 Javascript 调用 PHP 函数,对吗?

      在调用get_posts_page() 的某些页面上需要一些逻辑。您可以创建一个新页面 getPostsPage.php?offset=,也可以在functions.php 中添加一些逻辑,例如

      if(isset($_GET['function']) { 开关($_GET['功能']){ 案例“get_posts_page”: get_posts_page(); } }

      但是,建议使用前一种方法;你不希望有人能够修改function参数并恶意访问deleteAllPosts()

      因此:

      // 获取PostsPage.php 需要 PATH 。 'functions.php'; get_posts_page(); //检查 $_GET['offset']

      如果没有设置 'offset' 或其他什么,请记住优雅地失败(不要暴露错误消息)。

      【讨论】:

      • 请参阅@Baylor Rae 的回答,因为它是使用 WordPress 进行 AJAX 的标准方式,如果您以标准方式进行操作,您需要自己处理太多自动处理的事情(例如安全性)。
      猜你喜欢
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多