2012-02-25 4 views
-1

Все, Я пытаюсь использовать функцию do_shortcode. У меня есть следующие JQuery, чтобы вызвать функцию пост:Как использовать do_shortcode вне шаблона

category = $("#past_vendor_category").val(); 
search_term = $("#past_vendor_name").val(); 

$.post("http://localhost/wordpress/wp-content/search_past_vendors.php", { category: category, search_term: search_term }, function(results){ 
    $("#past_vendor_search_results").html(results); 
}); 

который затем вызывает этот PHP файл:

<?php 
global $shortcode_values, $theLayout; 
include "config.php"; 
$category = mysql_real_escape_string($_POST['category']); 
$search_term = mysql_real_escape_string($_POST['search_term']); 

$qry = "Select wp_posts.ID, wp_posts.post_name, wp_posts.post_title, custom_vendor_info.city, custom_vendor_info.city 
from wp_posts 
join custom_vendor_info on wp_posts.ID=custom_vendor_info.post_id 
join wp_term_relationships on wp_posts.ID=wp_term_relationships.object_id 
where wp_posts.post_title like '%$search_term%' and wp_term_relationships.term_taxonomy_id='$category'"; 
$result = mysql_query($qry); 
$resultrows = mysql_num_rows($result); 
$x=0; 
if($resultrows>0){ 
    $show_results = '<br>'; 
    while($resultset = mysql_fetch_array($result)){ 
     if($x==0){ 
     $show_results .= '<div class="vendor_search_result"><span class="vendor_search_result_name"><a href="'.$resultset['post_name'].'">'.$resultset['post_title'].'</a></span><span class"vendor_search_result_button">'.do_shortcode("[button]Text[/button]").'</span>'; 
     }else{ 
     $show_results .= '<div class="vendor_search_result"><span class="vendor_search_result_name"><a href="'.$resultset['post_name'].'">'.$resultset['post_title'].'</a></span><span class"vendor_search_result_button">'.do_shortcode("[button]Text[/button]").'</span>'; 
     $x=0; 
     } 
    } 
    echo $show_results; 
}else{ 
    echo '<br>Sorry, there were no search results for "<b>'.$search_term.'</b>". Please try again!'; 
} 
?> 

Этот файл находится не внутри Wordpress страницы, таким образом я получаю сообщение об ошибке: Неустранимая ошибка: вызов неопределенной функции do_shortcode() в D: \ Мои документы \ xampp \ htdocs \ wordpress \ wp-content \ search_past_vendors.php в строке 19

Любая идея, как я могу использовать do_shortcode вне страницы Wordpress ?

Благодаря

ответ

3

do_shortcode функция зависит от глобального состояния WordPress. Как и в вашем примере кода, вы не загружаете wordpress, он недоступен.

Я предлагаю вам создать себе какой-то плагин, который предлагает интерфейс Ajax и который затем обрабатывается бэкэндом AJAX по умолчанию Wordpress.

См. 5 tips for using AJAX in WordPress (original article archived) для пошагового описания, как правильно привязать функции PHP к запросам Ajax.

+0

Мертвая ссылка для «5 советов» – seanbreeden

+1

@seanbreeden: статья переместилась, обновила ссылку и связала архивированный оригинал – hakre

Смежные вопросы