另一種解決方案是在你的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值設置爲三元組?
沒有。它沒有工作。開始提供錯誤「Parse error,unexpected','」。它似乎使用%d不是佔位符,而是作爲字符串的一部分。 – John
它必須在像我這樣的雙引號內,不像你所做的那樣使用單引號,否則將使用它作爲%d –
即使使用雙引號,它也會將%d作爲字符串的一部分。我是否必須使用一些轉義字符......我擔心,即使那樣,主要問題仍將保持原樣。即使$ x = get_current_user_id()也不起作用。 – John