当前位置: 首页 > 知识库问答 >
问题:

如何为wordpress构建自定义过滤器?

郜德容
2023-03-14

因此,我一直在努力研究如何构建一种方法,使用用户输入过滤大量wordpress帖子。我不太确定我是否理解如何让它发挥作用。我会简单地解释我目前所知道的,也许有人能给我指出正确的方向。

所以我知道我可以使用wp_query($args)函数来查询我的数据库,并将我想要的过滤参数传递给它,以获得我想要的结果。现在,因为它必须由用户完成,我想我可以添加一个html表单,这样做

<form class="navbar-form navbar-right" method="get">
<div class="form-group">
Price($) <input type="number" name="priceone" min="0" max="99" value="0"> to
<input type="number" name="pricetwo" min="0" max="300">
<input type="submit" value="Search">
</div>
</form>

然后我写了如下的php代码来显示我的wordpress循环在我的主页上。我使用表单获取方法来存储的变量作为php变量,这将被用作一个变量在wp_query循环,如果用户按下提交。然而,这不起作用。

<?php 
  $minprice = $_GET["priceone"];
  $minprice = $_GET["pricetwo"];
  $args = array(
    'post_type' => 'food',
    'posts_per_page' => -1,
    'meta_query'=> array(
    'key' => 'price',
    'value' => array($minprice,$maxprice),
    'compare' => 'BETWEEN',
    'type' => 'NUMERIC'
 )
);

$thefood = new WP_Query( $args ); 
?>

<?php if ( $thefood->have_posts() ) : while ( $thefood->have_posts() ) : $thefood->the_post(); ?>

<div class="col-lg-2 col-md-3 col-sm-4 col-xs-4" style="padding-left: 0; padding-right: 0;">
<?php the_post_thumbnail(full, array('class' => 'img-responsive')); ?>
</div>

<?php endwhile; wp_reset_query(); else: ?>
<p><?php _e('Sorry, no food matched your criteria.'); ?></p>
<?php endif; ?>

在我添加新的价格变量之前,循环运行良好,显示了所有的帖子。现在,当我按下提交,它只是把变量添加到网址的末尾说?普里西明=3等。

我觉得我不明白什么。有人能给我指个正确的方向吗?谢谢你们

共有1个答案

堵昊焱
2023-03-14

要正确使用“meta_query”,实际上需要传递和数组数组。代码的另一个问题是在第二行中再次定义了minprice而不是maxprice。

类参考/WP元查询”WordPress Codex

<?php
    $minprice = $_GET["priceone"];
    $maxprice = $_GET["pricetwo"];
    $args = array(
        'post_type' => 'food',
        'posts_per_page' => -1,
        'meta_query'=> array(
             array(
                 'key' => 'price',
                 'value' => array($minprice,$maxprice),
                 'compare' => 'BETWEEN',
                 'type' => 'NUMERIC'
                )
            )
     );
 类似资料:
  • 演示在网关追加一个header public class CustomFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 演示在网关追加heade

  • SOFARPC 提供了一套良好的可扩展性机制,为各个模块提供 SPI 的能力。 SOFARPC 对请求与响应的过滤链处理方式是通过多个过滤器 Filter 来进行具体的拦截处理,该部分可由用户自定义 Filter 扩展,自定义 Filter 的执行顺序在内置 Filter 之后。具体方式如下: Bolt Filter 新建自定义 Filter 。 public class CustomFilter

  • 问题内容: 我试图在Log4J2中实现和配置自定义过滤器- 基于ThresholdFilter,但打算做更多。我已经看到了有关自定义追加程序的主题,这些主题遵循相同的插件注释语法,但是还没有找到有关自定义拟合程序的主题。 MyCustomFilter.java (基于ThresholdFilter) log4j2.xml LoggingRunner.java 配置语法似乎与Apache文档中的语法

  • 本文向大家介绍Django 自定义过滤器,包括了Django 自定义过滤器的使用技巧和注意事项,需要的朋友参考一下 示例 过滤器允许您将函数应用于变量。此函数可以使用0或1参数。语法如下: 过滤器可以链接在一起,因此非常有效: 如果将其翻译成python,上面的代码行将给出以下内容: 在此示例中,我们将编写一个verbose_name适用于模型(实例或类)或QuerySet的自定义过滤器。它将返回

  • Dorado支持在Client或Server端创建自定义的过滤器并指定过滤器的优先级生成过滤器链路。 Dorado支持全局生效的Filter和单个配置生效的Filter,具体使用方式见下面说明。 1.过滤器接口定义 package com.meituan.dorado.rpc.handler.filter; /** * 过滤器接口, 可自行实现 * * 全局生效Filter,通过SPI配置