WordPress使用帖子类型和选择框更改div内容

时间:2014-06-11 21:06:26

标签: javascript jquery ajax wordpress

我正在尝试为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中获取内容,而无需重新加载页面,但我无法弄清楚这一点。

有没有人对此有任何经验可以提供帮助?

1 个答案:

答案 0 :(得分:0)

你可以这样做。

  1. 通过一些操作触发AJAX请求,例如&#34; YOUR_AJAX_ACTION_NAME&#34;。在参数中传递帖子ID。 (在变更事件处理程序下)

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

    add_action(&#34; wp_ajax_YOUR_AJAX_ACTION_NAME&#34;,&#34; YOUR_FUNCTION_NAME&#34;);

    function YOUR_FUNCTION_NAME(){ //你的代码在这里 //从ajax请求中获取帖子ID。 //从帖子ID,获取帖子内容。 //回应内容。 }

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

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

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

    您的代码&#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