php - WordPress 的自定义搜索没有结果

标签 php mysql wordpress search advanced-custom-fields

我正在创建一个可搜索的图像存档,并使用高级自定义字段在页面上显示相应的信息。我正在本地主机上开发这个。 我创建了一个自定义搜索表单(searchform.php)以及一个自定义搜索结果页面(mysearch.php)。 自定义搜索表单包括一个选择菜单,该菜单由名为“流派”的自定义字段的值填充。当搜索表单本身与 WordPress 数据库元数据表通信以填充选择菜单时,搜索结果页面不会显示所选值的任何结果。

这是我的搜索表单的代码:

<form role="search" method="get" id="searchform" action="<?php esc_url( home_url( '/' )); ?>">
   <div>
   <input type='hidden' name='page_id' value='979'>
    <input type="hidden" value="" name="s" id="s" />
    <input type="hidden" value="page" name="post_type">
    <select name="genre">
    <?php
    global $wpdb;
    $metakey = 'genre';
    $genres = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
    if ($genres) {
       foreach ($genres as $genre) {
          echo "<option value=\"" . $genre . "\">" . $genre . "</option>";
        }
    }
    ?>
    </select>
    <input type="submit" id="searchsubmit" value="Search" />
  </div>
</form>

以下是我的搜索结果页面代码的基本内容(page_id=979):

<?php

global $wpdb;

$genres = $_GET['genre'];
if ($genres) {
  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

  $args=array(
    'cat' => 23,
    'meta_value' => $genres,
    'paged' => $paged
  );

  $query = new WP_Query($args);
} else {
  get_posts('cat=23');
}

if ($query) { ?>
  <h3>Your Search For <?php echo $genres; ?></h3>
  <?php } else { ?>
  <h3>Recently Added</h3>
  <?php }

if (have_posts()) :  while (have_posts()) : the_post();

$genre_search = get_post_meta($post->ID, 'genre', true); ?>
<div class="entry">
  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
  <?php the_title(); ?></a></h2>
  <?php the_content(); ?>
  <?php echo $genre_search; ?>
  <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">  Read More</a>
</div>
<?php endwhile;  ?>
<?php else : ?>
<p>Sorry no results were found</p>
<?php endif; ?>

<?php wp_reset_query(); ?>

所有具有自定义字段“流派”的页面的帖子类别 ID 均为 23(在使用自定义帖子类型 UI 插件的页面上实现)。

问题似乎出在搜索结果页面而不是搜索表单,因为尽管存在 150 个页面,并且为自定义字段(“流派”)选择了值,但 url 生成但没有给出任何结果。

我已经这样做了一个星期,搜索了很多论坛,在 WordPress 论坛上问了同样的问题,但无法弄清楚我的错误发生在哪里。任何帮助将不胜感激。

感谢您阅读本文。

最佳答案

     SELECT DISTINCT meta_value 
       FROM $wpdb->postmeta 
      WHERE meta_key = '%s' 
      ORDER 
         BY meta_value ASC

关于php - WordPress 的自定义搜索没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165223/

相关文章:

php - 无法通过 Mandrill 发送 BCC 电子邮件(通过 Laravel)

mysql - Laravel Eloquent 查询表名不区分大小写

mysql - 从yii2中的两个表中获取不匹配的记录

jquery - Ajax 调用后将出现 Facebook 评论框

javascript - 内容安全策略和 mod_pagespeed 评估

php - 使用 PHP 获取 CSV 文件的第一行并使用数据创建 MySQL 表

php - mysql 零值和空值

mysql string group_concat 给我一个错误

php - 去掉所有单引号

php - 我应该如何为 SO 和 yahoo 答案这样的用户创建一个积分系统?(PHP)