Wordpress,在摘录中搜索而不是内容

时间:2014-07-05 02:32:31

标签: php wordpress full-text-search wp-query

我在论坛上的新帖子,但在这里,我发现答案没有问,只是搜索,谢谢你。

以下是我的问题:

我有一个名为' publicacion'的自定义帖子类型。那里有下一个自定义WP_Query:

$query_args = array( 
        's' => mysql_real_escape_string( $_GET['s'] ),
        'post_type' => 'publicacion',
        'meta_key' => 'meta-box-fp'
    );

    if( $_GET['autor'] != '' ) {
        $query_args['tax_query'] = array( 
                                        array( 
                                            'taxonomy' => 'autores', 
                                            'field' => 'slug', 
                                            'terms' => mysql_real_escape_string( $_GET['autor'] ) 
                                        ) 
                                    );
    }

    if( trim( $_GET['fini'] ) != '' || trim( $_GET['ffin'] ) != '' ) {
        $query_args['meta_query'] = array ( 
                                        array( 
                                            'key' => 'meta-box-fp',
                                            'value' => array( mysql_real_escape_string( $_GET['fini'] ) . '-00-00', mysql_real_escape_string( $_GET['ffin'] ) . '-00-00' ), 
                                            'type' => 'DATE',
                                            'compare' => 'BETWEEN' ) 
                                    );
    }

    if( isset( $_GET['ord_by'] ) ) {
        $ordby = mysql_real_escape_string( $_GET['ord_by'] ) == 'year' ? 'meta_value' : mysql_real_escape_string( $_GET['ord_by'] );
        $query_args['orderby'] = $ordby;//mysql_escape_string( $_GET['ord_by'] );
        $query_args['order'] = 'DESC';//mysql_escape_string( $_GET['ord'] );
    }

    $query = new WP_Query( $query_args );

''参数重定向到搜索页面,但我需要在archive-publicacion.php文件中进行搜索,我需要' s'参数,搜索摘录而不是内容。 有可能这样做吗?谢谢,我希望在我的问题中明确,并原谅我的英语。

1 个答案:

答案 0 :(得分:0)

嗯..我已经通过在theme.php中添加查询参数而不是从archive.php中添加查询参数并更改了' s' to' str'当wordpress读取url时,从url中不重定向查询。 这看起来像这个functions.php:

    add_action( 'pre_get_posts', 'my_custom_search' );
function my_custom_search( $query ) {
    if( !is_admin() && $query->is_main_query() && $query->get('post_type') == 'publicacion' ) {

        if( isset( $_GET['str'] ) && !empty( $_GET['str'] ) ) {
            $query->set( 's', mysql_real_escape_string( $_GET['str'] ) );
        }

        if( ( isset( $_GET['fini'] ) && !empty( $_GET['fini'] ) ) && ( isset( $_GET['ffin'] ) && !empty( $_GET['ffin'] ) ) ) {
            $fini = !empty( $_GET['fini'] ) ? mysql_real_escape_string( $_GET['fini'] ) . '-00-00' : '1900-00-00';
            $ffin = !empty( $_GET['ffin'] ) ? mysql_real_escape_string( $_GET['ffin'] ) . '-00-00' : date( 'Y' ) . '-00-00';
            $args_meta_query = array(
                                        array(
                                            'key' => 'meta-box-fp', 
                                            'value' => array( $fini, $ffin ), 
                                            'type' => 'DATE', 
                                            'compare' => 'BETWEEN' 
                                        )
                                );
            $query->set( 'meta_query', $args_meta_query );
        }

        if( isset( $_GET['autor'] ) && !empty( $_GET['autor'] ) ) {
            $args_tax_query = array(
                                        array( 
                                            'taxonomy' => 'autores', 
                                            'field' => 'slug', 
                                            'terms' => mysql_real_escape_string( $_GET['autor'] ) 
                                        )
                                );
            $query->set( 'tax_query', $args_tax_query ); 
        }

        if( isset( $_GET['ordby'] ) && $_GET['ordby'] != 'fecha' ) {
            $ordby = mysql_real_escape_string( $_GET['ordby'] );
            $query->set( 'orderby', $ordby );
            $query->set( 'order', strtoupper( mysql_real_escape_string( $_GET['ord'] ) ) );
        }else {
            $ord = isset( $_GET['ord'] ) && !empty( $_GET['ord'] ) ? strtoupper( mysql_real_escape_string( $_GET['ord'] ) ) : 'DESC';
            $query->set( 'orderby', 'meta_value_num' );
            $query->set( 'meta_key', 'meta-box-fp' );
            $query->set( 'order', $ord );
        }

    }
}

我希望这可以帮助别人,并再次原谅我的英语。 再见。