【问题标题】:Is there any way to use a Wordpress function within an AJAX output and pass through the returned object as a parameter?有没有办法在 AJAX 输出中使用 Wordpress 函数并将返回的对象作为参数传递?
【发布时间】:2021-03-05 10:37:53
【问题描述】:

简而言之,我正在使用 AJAX 检索一堆自定义帖子,然后显示我想要的方式。

我面临的问题是在我的输出中,我现在需要使用一些 WordPress 函数,特别是“get_the_post_thumbnail_url()”。但我需要能够将返回的对象 ID 值作为第一个参数传递。

我已经尝试了引号、转义等的所有组合,似乎没有任何东西能够将 PHP 函数与 AJAX 对象值结合起来,所以我想知道这是否真的可行。

代码方面,AJAX 调用运行良好(我可以检索 get_posts() 中包含的所有内容,例如标题、内容、ID 等。我只是看不出如何获取这些值并将它们传递给要使用的 PHP 函数。

这可能吗?

function kwt21_three_card_reading_js() {
    
    return 'jQuery.ajax({
            type: "POST",
            url: "'.admin_url('admin-ajax.php').'",
            dataType: "json",
            data: {
                action : "kwt21_three_card_reading_get_cards"
            },
            success: function(response) {
            
                jQuery("#kwt21-three-card-reading").html("<div class=\"row\"></div>");
                
                jQuery.each( response, function( key, value ) {
                
                    if(key === 0) {
                        var cardID      = "the-past";
                        var cardTitle   = "The Past";
                    }
                    if(key === 1) {
                        var cardID      = "the-present";
                        var cardTitle   = "The Present";
                    }
                    if(key === 2) {
                        var cardID      = "the-future";
                        var cardTitle   = "The Future";
                    }
                    
                    var count = 0;
                    
                    jQuery("#kwt21-three-card-reading > .row").append(
                    
                        // Card
                        "<div class=\"col-md-4 mb-3 mb-md-0\">" +
                            "<div class=\"card  border-0 bg-transparent\">" +
                                "<div class=\"card-body p-0 text-center\">" +
                                    "<h3 class=\"card-title h5 mb-0\">" +
                                        "<a href=\"#" + cardID + "\" data-bs-toggle=\"modal\" class=\"stretched-link\">" +
                                            "<img src=\"'.wp_get_attachment_image_url(40917, 'medium').'\" />" +
                                        "</a>" +
                                    "</h3>" +
                                "</div>" +
                            "</div>" +
                        "</div>" +
                        
                        // Modal
                        "<div id=\"" + cardID + "\" class=\"modal three-card-reading-modal\" tabindex=\"-1\">" +
                            "<div class=\"modal-dialog modal-xl modal-dialog-centered\">" +
                                "<div class=\"modal-content\">" +
                                    "<div class=\"modal-body\">" +
                                        "<div class=\"row\">" + 
                                            "<div class=\"col-md-4\">" +
                                                "<img src=\"" + '.get_the_post_thumbnail_url(<!-- I need to use value["ID"] here -->).' + "\" />" +
                                            "</div>" +
                                            "<div class=\"col-md-8\">" +
                                                "<h3 class=\"modal-title h5 mb-3 text-uppercase text-spaced\">" +
                                                    cardTitle +
                                                "</h3>" +
                                                "<h4 class=\"h5 mb-3 text-uppercase text-spaced\">" +
                                                    value["post_title"] +
                                                "</h4>" +
                                                "<div class=\"modal-text\">" +
                                                    value["post_content"] +
                                                "</div>" +
                                            "</div>" +
                                        "</div>" +
                                    "</div>" +
                                "</div>" +
                            "</div>" +
                        "</div>"

                    );
                    
                    console.log(key, value);
                    
                });
                
            }
        });';
    
}

【问题讨论】:

  • ajax调用没有意义,你在哪里调用ajax请求,结果与你调用它的内容有什么关系。您想将一些数据发送到 php 进行解析,然后将结果作为 JSON 返回。例如,您在一个类别页面中,并且您想延迟加载下一页结果,您可以将类别 ID 和页码发送到 wordpress。
  • AJAX 调用很有意义,我要问的是如何在输出中使用 wordpress PHP 函数。我在要解析的结果中有 ID,但是无论我如何尝试使用参数输入函数,它似乎都不起作用。我可以收集到它与语法和格式有关,但我只是在寻找一些提示。

标签: php ajax wordpress


【解决方案1】:

类似这样的东西就是你所看到的。

//Allow calling for Logged in users
add_action("wp_ajax_kwt21_three_card_reading_get_cards","kwt21_three_card_reading_get_cards");
//Allow calling for Non Logged in users
add_action("wp_ajax_nopriv_kwt21_three_card_reading_get_cards","kwt21_three_card_reading_get_cards");

function kwt21_three_card_reading_get_cards(){
/* Parse the received data here and return it as a JSON object*/

  return json_encode ($result);
}

【讨论】:

  • 我知道如何返回东西,我需要知道如何在输出中使用 WP php 函数,并通过 ID.. 就像在我的代码中一样。抱歉,您的代码对我没有帮助。你能解释一下我如何从 $result 中获取帖子的 ID,然后在输出的 PHP 函数中使用它吗?
  • 好的,您添加到问题中的 php 函数到底在哪里调用?
猜你喜欢
  • 1970-01-01
  • 2023-01-27
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2017-09-25
  • 2017-07-10
  • 1970-01-01
相关资源
最近更新 更多