【发布时间】:2012-04-05 10:38:54
【问题描述】:
Hi Stack Overflow 社区。p>
我正在为撒旦开发一个 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。
我非常感谢在这个问题上的一些帮助。但是,请记住,我不仅想要一个解决方案,我还想了解自己在做什么,并尽可能学习一些新东西。
提前致谢。
【问题讨论】: