我正在尝试为WordPress创建一个创建自定义帖子类型的插件。还创建了用户可以放在网站上的窗口小部件。小部件想要在下拉选择框中列出每个帖子的标题。当所选标题发生变化时,相对帖子中的内容需要填充到窗口小部件中选择框下方的div中。
我创建了帖子类型和小部件。窗口小部件成功创建下拉菜单。我在使用相对内容更新div时遇到困难。我最初尝试通过运行PHP post循环并将所有内容添加到数组来实现这一点,但是意识到这会太麻烦。我认为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 :(得分:0)
你可以这样做。
通过一些操作触发AJAX请求,例如&#34; YOUR_AJAX_ACTION_NAME&#34;。在参数中传递帖子ID。 (在变更事件处理程序下)
您需要在functions.php文件中添加操作
add_action(&#34; wp_ajax_YOUR_AJAX_ACTION_NAME&#34;,&#34; YOUR_FUNCTION_NAME&#34;);
function YOUR_FUNCTION_NAME(){ //你的代码在这里 //从ajax请求中获取帖子ID。 //从帖子ID,获取帖子内容。 //回应内容。 }
在您的js文件中,在AJAX响应处理程序中,编写jQuery代码以更新所需DIV的内容。
我希望你现在可以自己编码。
以下是您可以使用的代码。
您的代码&#34;选择&#34;更改事件处理程序
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