如何通过AJAX获得CPT类别复选框列表和显示选中(倍增)复选框的帖子?

时间:2016-03-09 作者:Александр

我想创建一个输出自定义帖子类型类别的插件checkbox 列表(如在后端WordPress中)显示在使用ajax按下按钮(无需重新加载)后,包含前端类别上所选内容(多选)的CPT帖子。

我使用插件获取随机帖子(&A);URL并对其进行修改,但出现了一些问题。

这样我就有两个问题:

复选框会显示出来,但选中后我什么也看不到。我必须按submit,重新加载页面,然后才可以“类”;已选中“;写入我选中的复选框。但我需要在不重新加载的情况下完成它。

我不知道,如何将复选框与wp\\U查询连接起来,通过ajax获取帖子。

我也试过了wp_category_checklist 相反wp_dropdown_categories 但它返回白名单页。

据我所知,班级;已选中“;必须由jquery添加,在php函数中,按submit后,我需要一个类为“的处理程序”;已选中;。此外,我必须停用后提交按重新加载页面。

所以我的插件代码

php

    function get_random_post_tu() {

        // Simple as that, get a random post
        // I put it in an array to make it easier to read
        $args = array(
            \'post_type\'   => \'portfolio-item\',\'orderby\'     => \'rand\',
            \'numberposts\' => 1
        );

        // Add the Category parameter, if set
        if ( isset( $_POST[\'usecategory\'] ) && intval( $_POST[\'usecategory\'] ) != 0 ) {
  $args[\'tax_query\'] = array(
    array(
      \'taxonomy\' => \'portfolio_category\',
      \'terms\'    => intval( $_POST[\'usecategory\'] )
    )
  );

}
        $posts = get_posts( $args );

        /**
         * This actually gives us an array of post objects, so we should double check 
         * if there is indeed a post in there.
         */
        $data = array();
        if (is_array($posts) && isset($posts[0])) {

            // add this to use on frontend
            $data[\'status\']  = \'success\';
            $data[\'link\']    = get_permalink($posts[0]->ID);
            $data[\'title\']   = get_the_title($posts[0]->ID);
            $data[\'thumb\']   = get_the_post_thumbnail($posts[0]->ID);
            $data[\'content\'] = get_post_field(\'post_content\', $posts[0]->ID);

        } else {

            // add a error status
            $data[\'status\'] = \'error\';

        }    

        // use the WordPress built in function
        wp_send_json( $data ); // this is required to return a proper result

    }
JQuery
jQuery(document).ready(function($) {
$(\'.grp_getnew\').on(\'click\', function(){
    var data = {
        action: \'get_random_post_tu\',
        usecategory: $(\'#categoryselect\').val()
    };

    $.post( ajax_object.ajax_url, data, function(response) {
        if ( response.status != \'error\' ) {
            var $link = $("<a href=\'" + response.link + "\'>" + response.title + "</a><span >" + response.content +"</span>");
            $(\'.grp_content\').html($link);
        }
    }, "json");
});
});

输出随机帖子模板

    <?php
    //$args = array(
    //\'taxonomy\' => \'endo_wrc_group\',
       // \'id\' => \'categoryselect\'
   // );
   // wp_dropdown_categories( $args );  


    $cat_array = (isset($_POST[\'place_id\'])) ? $_POST[\'place_id\'] : array();
     ?>
 
<form method="post" action="" id="formen">

<?php
    
    $categories=get_categories(\'taxonomy=portfolio_category&hide_empty=0\');
    foreach($categories as $category) {
    
        echo \'<div class="formo">\';
        echo "<input type=\'checkbox\' name=\'place_id[]\' value=\'$category->term_id\' "; 
        echo (in_array($category->term_id, $cat_array)) ? \'checked="checked"\' : \'\';
        echo "/>";
        echo \'<span>\'.$category->cat_name.\'</span>\';
        echo \'</div>\';
        
    }//end foreach

?>
    <br />
    <input type="submit" value="" id="formbottom" class="grp_getnew">
 </form>
              
       <div class=\'grp_container\'>  
           <span class=\'grp_content\'></span>
       </div>
     <?php
     $out = ob_get_clean();
     return $out;
  }

?>
请帮帮我!非常感谢。

1 个回复
SO网友:majick

尝试添加return false; 阻止单击的默认提交操作。

$(\'.grp_getnew\').on(\'click\', function(){
    var data = {
        action: \'get_random_post_tu\',
        usecategory: $(\'#categoryselect\').val()
    };

    $.post( ajax_object.ajax_url, data, function(response) {
        if ( response.status != \'error\' ) {
            var $link = $("<a href=\'" + response.link + "\'>" + response.title + "</a><span >" + response.content +"</span>");
            $(\'.grp_content\').html($link);
        }
    }, "json");
    return false;
});

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i