嗨 Stack Overflow 社区。
我正在为撒旦开发一个 wordpress 网站。首先,我是一名初级 Web 开发人员,所以假设我还有很多东西要学... :-) 这是我第一次使用 Ajax,我对 PHP 没有太多经验或 wordpress 之外的 SQL。
该网站具有基于复选框的搜索功能。我有 2 组 3 个复选框(所以,总共 6 个)。所以,我有 2 个分类法,每个复选框代表一个不同的术语。我想根据撒旦使用这些复选框选择的类别,使用 ajax 更改页面的内容。我能够做到这一点,但一次只能使用一个复选框组合。因为有几十种不同的组合,我不认为编写几十种不同的查询/参数(每个组合一个)是一个好策略。那么,我该怎么做呢?
让我们看一个例子,让你明白我的意思:
想象一下,撒旦想通过一个表格来检查地狱里的灵魂数量。有两组复选框,一组用于人,一组用于惩罚,如下所示:
人们
- 男士
- 女性
- 孩子们
惩罚
- 在火焰中
- 刺穿
- 被恶魔吃掉
现在,我有这个 jQuery Ajax 代码:
$('#searchsouls').click(function(){
$.ajax({
url:"<?php echo get_bloginfo('template_url'); ?>/evil-laugh.php",
type:"POST",
async:"false",
data:$("#de-form").serialize(),
success:function(data) {
$('#666').empty().html(data);
},
error:function(e){
console.log('Error: ' + e);
}
});
return false;
})
这工作得很好。然后,我在 evil-laugh.php 中有这段代码:
<?php global $query_string;
$args = wp_parse_args($query_string);
$args = array(
'post_type' => 'souls',
'paged' => $paged,
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'post_status' => 'publish',
);
?>
<!-- THE LOOP -->
<?php $wp_query = new WP_Query( $args ); ?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
当然,这显示了所有的灵魂和各种惩罚,没有什么花哨的。我知道我可以通过为每个类别组合定义一组不同的论点来实现撒旦想要的。类似于(假设“Impaled”术语的 ID 为 9,并且“cat9”是复选框的名称):
if ($_POST['cat9']) {
$args = array(
'post_type' => 'souls',
'paged' => $paged,
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page' => -1,
'post_status' => 'publish',
'punishment' => 'impaled',
);
但是,有几十种不同的组合。这里有几个例子:
- 男子被刺穿
- 被恶魔吃掉的妇女或儿童
- 男人或女人在火焰中或被刺穿
- 儿童在火焰中或被刺穿或被恶魔吃掉
我想我可以做某种“for循环”来完成这个,但我不知道如何做到这一点或如何将类别ID添加到wordpress查询中,定义相应的AND和OR。
我真的很感谢在这个问题上的一些帮助。但是,请记住,我不想要一个解决方案,我想了解我在做什么并尽可能学习一些新东西。
提前致谢。