2014-06-11 41 views
0

我试图为创建自定义帖子类型的WordPress创建插件。用户可以在网站上创建一个小部件。小部件希望在下拉选择框中列出每个帖子的标题。当选定的标题发生变化时,来自相关帖子的内容需要填充到小部件中选择框下面的div中。WordPress使用帖子类型和选择框更改div内容

我已创建帖子类型和小部件。该小部件正在成功创建下拉菜单。我很难用相关内容更新div。我最初试图通过运行PHP后循环来完成此操作,并将所有内容添加到数组中,但意识到这太麻烦了。我将AJAX视为我的最佳解决方案,但是我没有这方面的经验,因此无法找到有用的示例。

<select id="optionToggle"> 
    <option value="default">Select a option</option> 
    <option value="196">Option 1</option> 
    <option value="197">Option 2</option> 
    <option value="198">Option 3</option> 
    <option value="199">Option 4</option> 
    <option value="201">Option 5</option> 
</select> 
<div class="content"></div> 

以上是我目前正在构建的数值是帖子ID和选项#是帖子标题。我有一个JavaScript函数,用于侦听#optionToggle何时更改,然后抓取值。据我所知,似乎WordPress有一个集成的AJAX功能,可以从一个给定的职位ID获取内容,无需重新加载页面,但我无法弄清楚。

有没有人有任何这方面的经验,可以帮助?

回答

0

你可以这样做。

  1. 用一些动作(例如“YOUR_AJAX_ACTION_NAME”)触发AJAX请求。通过参数中的帖子ID。 (下change事件处理)

  2. 您需要在您的functions.php文件中添加动作

    ADD_ACTION( “wp_ajax_YOUR_AJAX_ACTION_NAME”, “YOUR_FUNCTION_NAME”);

    函数YOUR_FUNCTION_NAME(){ //您的代码在这里 //从ajax请求中获取发布ID。 //来自帖子ID,获取帖子内容。 //回显内容。 }

  3. 在您的js文件中,在AJAX响应处理程序中,编写用于更新所需DIV内容的jQuery代码。

我希望你现在可以自己编码。

以下是您可以使用的代码。

代码为贵“选择”更改事件处理程序

var ajax_data = { 
       action: 'YOUR_AJAX_ACTION_NAME', 
       post_id: jQuery("#optionToggle").val(); 
     }; 

jQuery.post(ajaxurl, ajax_data, function(response) { 

    jQuery("#YOUR-DIV-ID").html(response); 
}); 

代码添加到functions.php文件

add_action("wp_ajax_YOUR_AJAX_ACTION_NAME", "YOUR_FUNCTION_NAME"); 

function YOUR_FUNCTION_NAME(){ 
    if(isset($_POST['post_id']) && $_POST['post_id']){ 
     $content_post = get_post($_POST['post_id']); 
     $content = $content_post->post_content; 
     echo $content; 
     die(); 
    } 
} 

如果在任何情况下ü希望非登录用户做AJAX,你可以添加

add_action("wp_ajax_nopriv_YOUR_AJAX_ACTION_NAME", "YOUR_FUNCTION_NAME"); 

您可以在这里了解更多关于它的信息:http://codex.wordpress.org/AJAX_in_Plugins

相关问题