2014-05-16 81 views
0

我在wordpress 3.9中製作了一個WordPress模板mytemp.php。在這我可以使用WordPress的功能。例如,下面的作品完美。如何在ajax php文件中使用wordpress函數

$(document).ready(function() { 
     alert(<?php echo get_current_user_id() ?>); 
    } 

但是,該模板文件也會根據用戶輸入調用一些ajax腳本。在那邊它不起作用。例如,下面的語句返回致命錯誤「調用未定義的函數get_current_user_id」

$sql = 'SELECT x,y FROM table WHERE user_id = ' . get_current_user_id(); 

我猜測,我需要告訴AJAX腳本,包括一些WordPress的文件或一些全局變量,但我不知道怎麼樣。

回答

1

我解決了它的功能,這種風格的SQL語法。我需要做的只是在下面包含聲明。

include '../../../../wp-load.php'; 

通過包括本,它開始認識到功能get_current_user_id()

0

試試這個。我剛纔回答的問題不是很久以前使用get_current_user_id();

$sql = "SELECT x,y FROM table WHERE user_id = %d", get_current_user_id(); 
+0

沒有。它沒有工作。開始提供錯誤「Parse error,unexpected','」。它似乎使用%d不是佔位符,而是作爲字符串的一部分。 – John

+0

它必須在像我這樣的雙引號內,不像你所做的那樣使用單引號,否則將使用它作爲%d –

+0

即使使用雙引號,它也會將%d作爲字符串的一部分。我是否必須使用一些轉義字符......我擔心,即使那樣,主要問題仍將保持原樣。即使$ x = get_current_user_id()也不起作用。 – John

1

嘗試包括WP-load.php文件中的AJAX文件,包括該文件WordPress的功能在你的Ajax正常工作後文件,或者您需要編寫一個插件,如ajax.php,然後使用此插件文件爲您的ajax文件。

之後,您可以訪問wp功能。

希望它會有所幫助。

0

另一種解決方案是在你的ajax腳本和發佈給它的javascript之間建立一個契約。 所以,在你調用PHP腳本,你可以設置一些JSON在你的頭:

<script> 
    <?php echo "wp-data = {current_user_id: " . get_current_user_id() "}"; ?> 
</script> 

然後把它放在你的Ajax調用:

$.ajax({ 
    url: "http://yourdomain.com/process_wp_ajax.php", 
    method: "post", 
    data: { 
     . . . //your post data 
     current_user_id: wp-data.current_user_id; 
    }) 
    .success(function(response) {}) 
    .fail(function(response) {}) 
    .complent(function(response, status) {}; 

你收到應該期待「current_user_id」來在POST(或GET)上。

這涉及到更多的工作,但是您可以在每次進行ajax調用時避免加載WP框架。

如果你想設置多個值,不要使用上面的php。設置一個對象來代替,而只是調用json_encode它:

<?php 
    wp_object = (object) array('wp-val1' => wp_func1(), 'wp-val2' => wp_func2()); 
?> 
<script> 
    <?php echo "wp-data =" . json_encode(wp_object) . ";"; ?> 
</script> 

乾燥,只需直接通過WP-數據對象在你的Ajax:

$.ajax({ 
    url: "http://yourdomain.com/process_wp_ajax.php", 
    method: "post", 
    data: { 
    . . . 
    wp-object: wp-data, 
    } 
    . . . 

因此,在你調用腳本,你會在eventuall到達:

$sql = "SELECT x,y FROM table WHERE user_id = %d", $_POST['current_user_id'] 

或`$ _ POST [ 'WP-對象'] [ 'current_user_id']

(當然你W¯¯在這個權利之前是否應該將$ _POST值設置爲三元組?