WP_Query class not found

时间:2012-10-04 作者:Radu Andrei

这个想法很简单。我有一个用get\\u categories()生成的下拉菜单。这将输出无序列表中的类别列表,每个类别都位于其自己的li元素中
当用户单击这些li元素时,我会得到它们的文本值,并基于此,我想创建一个自定义wp\\U查询,该查询只返回该类别中的帖子。为此,我将list元素的文本值加载到JS变量中,并将其发送到php文件进行处理。该php文件按如下方式构造字符串:

$ff_query = new WP_Query(\'posts_per_page=2&category_name=\'.$_POST[\'JSvariable\']); 
…理想情况下应该执行它,从DB返回信息。我得到的错误是:

致命错误:C:\\xampp\\htdocs\\suply\\WP content\\themes\\suply\\includes\\proc\\u cat.php中未找到类‘WP\\u Query’”第3行”

这是我的2个文件的外观:

1) 发送ajax请求的文件:

<script>
    $(document).ready(function(e) {
        $("#ddmenu li").on(\'click\', function() {
            var cValue = $(this).text();
            $.post("<?php bloginfo(\'template_url\');?>/includes/proc_cat.php", {name: cValue}, function(cat){                
                alert(cat);
                $(".browse-big-slider").append(cat);
            });//end of post
        });//end of click
    });//end of ready
</script>
2)应处理

if(isset($_POST)){
        $name = \'posts_per_page=2&category_name=\'.$_POST[\'name\'];
        $ff_query = new WP_Query(\'posts_per_page=2&category_name=\'.$_POST[\'name\']);
      something else, but it won`t reach this part.
}
我能做些什么来实现这一目标?或者,作为替代方案,我如何创建我想要的功能类型?(基本上是根据用户选择动态生成的不同查询)。

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

这是因为当直接调用主题模板时,您只有模板文件中包含/定义的内容,而不是整个WordPress环境。

有些人试图通过添加包含wp标头或加载等来修复此问题,但这是incredibly damaging

在执行AJAX请求时,never 调用主题中的文件,而不是调用WP AJAX API。

使用WP AJAX API,您的文件在functions.php.

我强烈建议您遵循本文的建议:

http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/#js-global

e、 g.PHP:

wp_localize_script( \'my-ajax-request\', \'MyAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) )
add_action( \'wp_ajax_nopriv_myajax-submit\', \'myajax_submit\' );
add_action( \'wp_ajax_myajax-submit\', \'myajax_submit\' );

function myajax_submit() {
    // get the submitted parameters
    $postID = $_POST[\'postID\'];

    // generate the response
    $response = json_encode( array( \'success\' => true ) );

    // response output
    header( "Content-Type: application/json" );
    echo $response;

    // IMPORTANT: don\'t forget to "exit"
    exit;
}
JS公司:

jQuery.post(
    // see tip #1 for how we declare global javascript variables
    MyAjax.ajaxurl,
    {
        // here we declare the parameters to send along with the request
        // this means the following action hooks will be fired:
        // wp_ajax_nopriv_myajax-submit and wp_ajax_myajax-submit
        action : \'myajax-submit\',

        // other parameters can be added along with "action"
        postID : MyAjax.postID
    },
    function( response ) {
        alert( response );
    }
);

结束

相关推荐

如何在注册时使用AJAX检查用户名可用性

我正在使用buddypress,它使用自己的模板形式register.php 注册地址:http://mysite.com/register. 我正在寻找一种方法,通过ajax验证向用户显示他们输入的用户名是否可用。下面是表单中的一个片段。<?php do_action( \'template_notices\' ) ?> <?php do_action( \'bp_before_account_details_fields\' ) ?> <div cl