【问题标题】:Pass arguments into search results将参数传递到搜索结果中
【发布时间】:2016-11-11 05:48:25
【问题描述】:

我正在为我的 wordpress 网站上的自定义帖子类型创建搜索功能,我需要根据 ACF True/False 字段过滤掉搜索结果。我必须使用 WP_Query 来传递参数,因为通用 wordpress 循环不允许这样做,但是当我使用 WP_Query 时,查询会根据我传递的参数返回所有帖子,而忽略实际的搜索词。

<?php $args = array( 
  'post_type' => 'work',
  'posts_per_page' => -1,
  'meta_query' => array(
    array(
      'key' => 'work_hidden',
      'value' => '0',
      'compare' => '=='
    )
  )
); 

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) : 
  while ( $the_query->have_posts() ) {
    $the_query->the_post();
    include "partials/work-card.php";
  } 
endif; ?>

如何使用 WP_Query 来包含搜索词和参数。

非常感谢!

【问题讨论】:

    标签: php wordpress advanced-custom-fields


    【解决方案1】:

    首先,当您希望 SQL 中的等于时,“比较”必须是单个“=”;

    接下来你必须把搜索参数设置为Documentation,假设是$_GET['search']

    $args = array( 
        'post_type' => 'work',
        'posts_per_page' => -1,
        's' => $_GET['search'],
        'meta_query' => array(
             array(
                'key' => 'work_hidden',
                'value' => '0',
                'compare' => '='
            )
        )
    );
    

    【讨论】:

    • 感谢您的及时回复!不幸的是 $_GET['search'] 没有将搜索词传递给我的论点。实际上,我尝试将显式值传递给 's' 键只是为了查看它是否有效,但它没有。似乎 's' 键被忽略了...我想知道它是否与我使用 Relevanssi 搜索结果插件有关...
    • 有可能。尝试使用直接传递 SQL 查询的 $wpdb 对象。
    • 我的查询参数是 's'(例如 website.com/?s=NYC)——如果我回显 $_GET['s'] 我可以看到我的搜索词,但是当我尝试将它作为值传递给 's' 是我的查询参数,没有显示任何帖子...我知道这不是真的,因为如果我使用标准 WP Loop,我可以看到该搜索词的结果。
    • 您可以尝试将搜索放在元查询数组的另一个元素中,关系“与”指向您要搜索的字段。但您将实现相同的目标。不知道为什么它不适合你。这是question,有人在其中实现了您想要做的事情并要求更棘手的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多