如何为自定义分类页面创建筛选器

时间:2020-07-17 作者:Nika Dudzinski

我想做的是为我的自定义分类页面创建过滤器。

例如

我有一个自定义的分类法,可以用缩略图和分页创建,但我想为女孩添加过滤器。

过滤器用于选择头发的颜色以查看女孩,例如:我想看到金发女孩,或国家等,还需要大多数视频、访问量最大等的过滤器。。

头发等示例:https://prnt.sc/tjkc3d

访问次数最多的示例:https://prnt.sc/tjkbei

我该怎么办?你能帮帮我吗?谢谢

1 个回复
SO网友:Kevin

您可以使用过滤器pre_get_posts 操纵全局WP_Query 对象应用过滤器。

如果您的过滤器添加URL参数,您可以操纵查询并根据自己的喜好进行调整。

这里有一个例子。您仍然需要调整分类法和帖子类型以使其适合您。

<?php // functions.php

/**
 * Modifies the query in a Post Type Archive and defines the taxonomy for hair color.
 * 
 * @param WP_Query $query The global WP_Query Object.
 *
 * @return WP_Query
 */
function my_custom_query( $query ) {

  /**
   * Here we tell WordPress that we want to adjust the query when we
   * are not in the admin area and only on the post type archive for girls.
   */
  if ( ! is_admin() && is_post_type_archive( \'girl\' ) ) {

    /**
     * Here we check whether a query parameter hair_color is available and then
     * apply it. To do this, we change the taxonomy of the current query.
     */
    if ( isset( $_GET[\'hair_color\'] ) && \'\' !== $_GET[\'hair_color\'] ) {
      $hair_color = sanitize_text_field( wp_unslash( $_GET[\'hair_color\'] ) );

      /**
       * Here we define the term hair_color for the taxonomy hair_colors.
       */
      $hair_taxonomy = [
        [
          \'taxonomy\' => \'hair_colors\',
          \'field\'    => \'slug\',
          \'terms\'    => $hair_color,
        ],
      ];

      $query->set( \'tax_query\', $hair_taxonomy );
    }
  }

  /**
   * Here we return the manipulated query.
   */
  return $query;
}

/**
 * Here our manipulated query is transferred to WordPress.
 */
add_filter( \'pre_get_posts\', \'my_custom_query\' );

相关推荐