我如何在ajax.php中使用wordpress功能和插件快捷方式

时间:2016-06-22 22:20:51

标签: php jquery ajax wordpress wordpress-plugin

function scroll_load(){
var num_next=current_company()
//alert(num_next)
        $('#loading').css('display', 'block')
        $.ajax({
            url: '<?php echo get_stylesheet_directory_uri().'/ajax.php?id=';?>'+num_next,
            data:{year:current_year},
            dataType: 'html',
            success: function(html) {

                $('#posts').append(html); 

                $('#loading').css('display', 'none')
            },
            error: function( jqXhr, textStatus, errorThrown ){
                console.log( errorThrown );
            }
        });

        }

这是我的功能我从ajax.php获取数据但是当我使用像插件短片的get_header这样的wordpress函数时,它会说致命错误任何一个帮助我谢谢

2 个答案:

答案 0 :(得分:0)

首先,请查看https://codex.wordpress.org/AJAX_in_Plugins,因为它提供了如何在WordPress中使用AJAX的完整概述。

因此,您需要在AJAX调用中添加两项内容:

  1. WordPress的AJAX网址。一个简单的方法是,如果您使用wp_localize_script对Javascript进行排队,则可以使用 wp_localize_script( 'the-name-of-your-enqueued-script', 'ajax_url', admin_url( 'admin-ajax.php') ); 将AJAX URL作为页脚中的变量。

    action
  2. 为名为more_posts的数据添加一个参数,WordPress将使用该参数将其连接到服务器上的某些操作。我会称之为add_action( 'wp_ajax_more_posts', 'more_posts_callback' ); add_action( 'wp_ajax_nopriv_more_posts', 'more_posts_callback' );

  3. 然后,在主题(或插件)中的functions.php文件中,添加一些add_action ...

    more_posts_callback()

    您需要“nopriv”和常规版本,因此登录并且未登录的用户可以获得相同的功能。

    接下来,编写year函数来执行您需要的任何操作。您可以从$_GET['year']抓取echo变量(假设您正在通过AJAX执行GET请求)

    最后,要获得返回值,wp_die()您的结果,然后确保运行wp_send_json($return)。或者,如果要返回JSON对象,只需编写$return,其中function more_posts_callback(){ $year = $_GET['year']; ..... // Your code to generate $return echo $return; wp_die(); } 是您希望从服务器返回的任何内容。

    $year

    现在,这不包括任何数据验证或身份验证,例如nonce或检查id Distance 00 0 01 0 02 0 03 0 04 0 05 10 06 0 07 0 08 0 09 0 10 16 11 0 12 0 13 6 是否为整数。

答案 1 :(得分:0)

如果找到它,哇,这就是答案

对于使用像do_shortcut()这样的WordPress函数,必须在ajax url php文件中加载wp_load.php 这是代码应该在我的代码中使用,例如在ajax.php

$ parse_uri = explode(&#39; wp-content&#39;,$ _SERVER [&#39; SCRIPT_FILENAME&#39;]); require_once($ parse_uri [0]。&#39; wp-load.php&#39;); enter link description here

能够使用<?php echo do_shortcode('[ssba]'); ?>