2012-01-26 22 views
0

我有一個外部php文件,用於查詢WP數據庫的文章。我使用WP_Query類來自定義我的查詢。它運行良好,如果我在模板文件中,但它不會當我添加一個新的PHP文件。Wordpress和JQuery:在外部php文件中集成WP功能並將URL重定向到主題區域

我想包括WP用於我的文件的功能。

Ajax的nao.php

$categoryid = $_GET['cat']; 
$postnum = $_GET['ponum']; 
$pagenum = $_GET['panum']; 

$args = array (
     'cat' => $categoryid, 
     'posts_per_page' => $postnum, 
     'paged' => $pagenum 
); 
$q = new WP_Query($args); 
while($q->have_posts()) : $q->the_post(); 
    $post_excerpt = get_the_excerpt(); 
    $wrapper = '<h2 class="column-titles">' . get_the_title() . '</h2>' . '<p>' . $post_excerpt . '</p>'; 
    echo $wrapper; 
exit(); 
endwhile; 
echo "No results found!"; 

當我運行它,我得到這個錯誤

Fatal error: Class 'WP_Query' not found in I:\xampp\htdocs\dmp\wp-content\themes\dmp-v3\Ajax-nao.php on line 11

此外,有沒有一種方法來進行。獲得$()來加載我的PHP中我的主題文件夾,而不是在根目錄?

謝謝。

回答

0

有幾種方法可以做到這一點。一種是簡單地創建無任何頁眉或頁腳模板文件:

<?php 
    /** 
    * Template Name: AJAX NAO 
    */ 

    $categoryid = $_GET['cat']; 
    $postnum = $_GET['ponum']; 
    $pagenum = $_GET['panum']; 

    $args = array (
      'cat' => $categoryid, 
      'posts_per_page' => $postnum, 
      'paged' => $pagenum 
    ); 
    $q = new WP_Query($args); 
    while($q->have_posts()) : $q->the_post(); 
     $post_excerpt = get_the_excerpt(); 
     $wrapper = '<h2 class="column-titles">' . get_the_title() . '</h2>' . '<p>' . $post_excerpt . '</p>'; 
     echo $wrapper; 
    exit(); 
    endwhile; 
    echo "No results found!"; 

然後你可以使用該模板在您的WP管理新的一頁。在你的jQuery中,調用該頁面的完整URL。

較難但首選的方法是創建一個插件。你需要這樣的:在你的jQuery

<?php 
/* 
    Plugin Name: My AJAX NAO 
    Description: Returns NAO 
    Version: 1.0 
    Author: You 
    Author URI: http://yoursite.com 
*/ 

// 
function nao_callback() { 
    $categoryid = $_POST['cat']; 
    $postnum = $_POST['ponum']; 
    $pagenum = $_POST['panum']; 

    $args = array (
      'cat' => $categoryid, 
      'posts_per_page' => $postnum, 
      'paged' => $pagenum 
    ); 
    $q = new WP_Query($args); 
    while($q->have_posts()) : $q->the_post(); 
     $post_excerpt = get_the_excerpt(); 
     $wrapper = '<h2 class="column-titles">' . get_the_title() . '</h2>' . '<p>' . $post_excerpt . '</p>'; 
     echo $wrapper; 
    exit(); 
    endwhile; 
    echo "No results found!"; 
} 
add_action('wp_ajax_nao', 'nao_callback'); 
add_action('wp_ajax_nopriv_nao', 'nao_callback'); 

然後:

jQuery.ajax({ 
    url: '/wp-admin/admin-ajax.php', 
    method: 'POST', 
    dataType: 'html', 
    data: { 
     action: 'nao', 
     cat: '1', 
     ponum: '2', 
     panum: '3' 
    }, 
    success: function(data) { 
     $('.js-element').html(data); 
    } 
}); 

假設js-element是你要添加的結果到容器的類名。

相關問題