WP_User_Query not searching

时间:2013-07-02 作者:Austin Biggs

我目前有以下代码,在user\\u business表中有一个名为“Clark Farm”的用户。下面的代码不返回任何内容。如果删除搜索词,则会列出所有用户。我正在试图确定为什么搜索不起作用。。

<?php
/**
 * @package WordPress
 * @subpackage themename
 */

get_header(); ?>
<?php 
    $url = $_SERVER[\'REQUEST_URI\'];
    $tokens = explode(\'/\', $url);
    $search = $tokens[sizeof($tokens)-1];
    $searchQuery = str_replace("-", " ", $search);
?>
<?php echo $search; ?>
<div id="main">
        <div id="primary">
            <div id="content">
                <?php the_post(); ?>
                <div class="contentLeft">

                <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> role="article">

                        <h1 class="entry-title">Search Results for: <?php echo $searchQuery; ?></h1>

                    <div class="entry-content">

                        <?php 
                            // WP_User_Query arguments
                            $args = array (
                                \'search\'         => \'Clark\',
                                \'search_columns\' => array( \'user_business\' ),
                                \'count_total\'    => true,
                                \'fields\'         => \'all_with_meta\',
                            );

                            // The User Query
                            $user_query = new WP_User_Query( $args );

                            // The User Loop
                            if ( ! empty( $user_query->results ) ) {
                                foreach ( $user_query->results as $user ) {
                                    echo $user->user_business . \'<br>\';
                                }
                            } else {
                                    echo \'NOT WORKING!\';
                            }
                        ?>

                    </div><!-- .entry-content -->
                </article><!-- #post-<?php the_ID(); ?> -->

                </div>
                <div class="contentRight"><?php if ( dynamic_sidebar(\'main-sidebar\') ) : else : ?><?php endif; ?></div>
                </div>
            </div><!-- #content -->
        </div><!-- #primary -->
<?php get_footer(); ?>

1 个回复
SO网友:s_ha_dum

WP_User_Query 搜索the $wpdb->users table. 它不会加入您的自定义表。它怎么知道JOIN? 可能的表名称和结构实际上是无限的。

我相信你可以在pre_user_queryWHERE 但没有JOIN 值,因此您必须更改query_fromquery_where. 这可能很棘手,但应该是可以做到的。

编辑:

如果有新的信息,现在听起来what you need is a meta_query.

$args = array(
    \'count_total\'    => true,
    \'fields\'         => \'all_with_meta\',
    \'meta_query\' => array(
        array(
            \'key\' => \'user_business\',
            \'value\' => \'Clark\',
            \'compare\' => \'=\'
        )
    )
 );
$user_query = new WP_User_Query( $args );
假设您的用户元密钥是user_business 你想要一个完全匹配的。有关的其他值,请参见Codexcompare.

结束

相关推荐

Search Post Title Only

我正在使用标准WordPress搜索表单搜索自定义帖子类型。这是我的代码:<form role=\"search\" method=\"get\" id=\"searchform\" action=\"<?php echo home_url( \'/\' ); ?>\"> <input type=\"hidden\" name=\"post_type\" value=\"attorney\" /> <input type=\"text\" valu