下拉类别wordpress

时间:2015-10-17 17:04:39

标签: php wordpress categories

我在搜索表单中使用了下拉类别功能。当我使用选项" ALL"它没有显示任何结果,我希望显示所有类别的所有帖子。我错过了什么?

以下是我的询问:

if ( isset($_GET['cat']) && isset($_GET['manufacturer']) ) {

                    $tax_query = array( 'relation' => 'AND' );
                    array_push($tax_query,
                        array(
                            'taxonomy'  => 'manufacturers',
                            'field'     => 'id',
                            'terms'     => $_GET['manufacturer']
                        ),
                        array(
                            'taxonomy'  => 'category',
                            'field'     => 'id',
                            'terms'     => $_GET['cat']
                        )
                    );
                }
$query_args = array(
                    'post_type'         => 'yacht',
                    'meta_or_tax'       => true,
                    'tax_query'         => $tax_query,
                    'posts_per_page'    => -1,
                    'meta_query'        => array(
                        'relation'      => 'AND',
                        array(
                         'key'          => 'yachts_loa_length_round',
                         'value'        => array($_GET['min_length'], $_GET['max_length']),
                         'compare'      => 'BETWEEN',
                         'type'         => 'NUMERIC',
                        ),
                        array(
                         'key'          => 'yachts_price',
                         'value'        => array($_GET['min_price'], $_GET['max_price']),
                         'compare'      => 'BETWEEN',
                         'type'         => 'NUMERIC',
                        ),
                        array(
                         'key'          => 'yachts_year',
                         'value'        => array($_GET['min_year'], $_GET['max_year']),
                         'compare'      => 'BETWEEN',
                         'type'         => 'NUMERIC',
                        )
                    )
                );

                $yacht_query = new WP_Query( $query_args );

和我的php函数:

$args = array(

                'orderby'            => 'menu_order',
                'show_option_all'   => pll__('All '),
                'order'              => 'ASC',
                'hide_empty'         => 0,
                'class'              => 'form-select',
                'taxonomy'           => 'category',
                'value_field'        => 'term_id'
              );

              wp_dropdown_categories( $args ); ?>

 $args = array(

                'orderby'            => 'menu_order',
                'show_option_all'   => pll__('All'),
                'order'              => 'ASC',
                'hide_empty'         => 0,
                'name'               => 'manufacturer',
                'class'              => 'form-select',
                'taxonomy'           => 'manufacturers',
                'value_field'        => 'term_id'
              );

              wp_dropdown_categories( $args ); ?>

1 个答案:

答案 0 :(得分:0)

在wordpress.stackexchange.com上使用@Milo的帮助管理解决它

$tax_query = '';

if( isset($_GET['cat']) && 0 != $_GET['cat'] ) {
    $tax_query[] = array(
        'taxonomy'  => 'category',
        'field'     => 'term_id',
        'terms'     => $_GET['cat']
    );
}

if( isset($_GET['manufacturer']) && 0 != $_GET['manufacturer'] ) {
    $tax_query[] = array(
        'taxonomy'  => 'manufacturers',
        'field'     => 'term_id',
        'terms'     => $_GET['manufacturers']
    );
}

// only add relation if both are set and non-zero
if( isset($_GET['manufacturer']) && 0 != $_GET['manufacturer'] && isset($_GET['cat']) && 0 != $_GET['cat'] ) {                
    $tax_query['relation'] = 'AND';
}

// query args for all queries
$query_args = array(
    'post_type' => 'yacht',
    // other args...
);

// add tax query if it isn't empty
if( !empty( $tax_query ) ){
    $query_args['tax_query'] = $tax_query;
}

$yacht_query = new WP_Query( $query_args );