我想创建一个输出自定义帖子类型类别的插件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;
}
?>
请帮帮我!非常感谢。