2014-01-08 64 views
0

我有一個變量從我的functions.php文件中被從jQuery拉到php中。使用在functions.php中定義的變量WORDPRESS

但我無法在頁面中使用它。

當我的functions.php呼應它,它會出現在鍍鉻控制檯,但附加一個0 ..

如果我嘗試呼應它在我的模板頁面,我什麼也沒得到。

下面的代碼。

jQuery的

var pie = 131; 

$.ajax({ 
    url: ajaxurl, //super global supplied by Wordpress; do not change 
    type: 'POST', 
    data: { 
     action: 'get_post_id', //this is correct 
      pie : pie 
    }, 
    success: function (data){ 
     console.log(data); 
    } 
}); 

的functions.php

add_action('wp_head','pluginname_ajaxurl'); 
    function pluginname_ajaxurl() { 
    ?> 
    <script type="text/javascript"> 
    var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 
    </script> 
    <?php 
    } 

    add_action('wp_ajax_nopriv_get_post_id', 'my_ajax_function'); 
    add_action('wp_ajax_get_post_id', 'my_ajax_function'); 

    function my_ajax_function() { 
     $new_pie = isset($_POST['pie']) ? $_POST['pie'] : false; 
     echo($new_pie); 
    } 

模板page.php文件

<?php echo($new_pie); ?> 

在此先感謝。

+0

*旁註:* echo中的括號不是必需的。 – Raptor

+0

謝謝@ShivanRaptor –

回答

0

我在之前的一個問題中提到了這個問題。

由於需要在回聲後需要die(),所以0被添加到Ajax調用中。

echo $new_pie; 
die(); 

這將停止0被追加。

至於從AJAX調用返回的數據,你需要對它做些事情,比如將它附加到一個元素。

$('#elementID').append(data); 

在這種情況下,elementID是元素的ID,例如一個DIV或P.

旁註

沒有理由使用以下:

<script type="text/javascript"> 
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 
</script> 

Wordpress爲您創建了javascript ajaxurl變量,自從WP 2.8以來一直這樣做。

+0

感謝隊友,對不起,我一直在檢查上一個問題,但沒有看到您的回覆。 很酷,0排序。 我需要使用var $ new_pie作爲我的頁面中的變量,以便根據傳遞的值拉入自定義字段。 <?php the_field('option_4_description',$ new_pie); ?> 這可能嗎? @Ohgodwhy –

+0

@DeanMGordon不用,您可以使用[get_post_meta()](http://codex.wordpress.org/Custom_Fields#Getting_Custom_Fields)代替。暗示。你可以做'global $ post; $ post-> ID;'獲取您正在發佈的帖子的當前ID。 – Ohgodwhy

+0

啊唉,我會一直想着。 感謝您的幫助。 @Ohgodwhy –

相關問題