在自定义查询中包括插件的表

时间:2017-05-21 作者:Dinamicore

我根据帮助解决这个问题的投稿人(下文)的建议,重新措辞了这个问题。

正如我们所知,WordPress搜索在默认情况下只在这个搜索函数中包含de wp\\u posts数据库表。

在“插件表”部分中的关键字搜索之后Custom Queries WordPress CODEX“我需要将wp\\u usermeta表与wp\\u posts表连接起来。

我使用了这些函数。php在子主题中尝试将wp\\u usermeta表与wp\\u posts表连接起来,以便显示其数据。

具体来说,我需要获取并在搜索结果中显示从wp\\u usermeta表中的meta\\u键“country”存储的“country”字段。

我尝试了下面的两个代码,但没有成功。我得到的只是“无结果”,包括在函数中包含以下两个代码之前显示良好的帖子。php。

请对此提出建议。

谢谢

代码1:

function cf_search_join( $join ) {
global $wpdb;

if ( is_search() ) {    
    $join .=\' LEFT JOIN \'.$wpdb->wp_zyus_usermeta. \' ON \'. $wpdb->wp_zyus_posts. \'.ID = \' . $wpdb->wp_zyus_usermeta. \'.post_id \';
}

return $join;
}
add_filter(\'posts_join\', \'cf_search_join\' );
function cf_search_where( $where ) {
global $wpdb;

if ( is_search() ) {
    $where = preg_replace(
        "/\\(\\s*".$wpdb->wp_zyus_posts.".post_title\\s+LIKE\\s*(\\\'[^\\\']+\\\')\\s*\\)/",
        "(".$wpdb->wp_zyus_posts.".post_title LIKE $1) OR (".$wpdb->wp_zyus_usermeta.".meta_value LIKE $1)", $where );
}

return $where;
}
       add_filter( \'posts_where\', \'cf_search_where\' );

  function cf_search_distinct( $where ) {
global $wpdb;

if ( is_search() ) {
    return "DISTINCT";
}

return $where;
}
add_filter( \'posts_distinct\', \'cf_search_distinct\' );
代码2:

add_filter( \'posts_join\', \'acme_search_submission_join\' );      
function acme_search_submission_join( $join ) {
if ( is_admin() || ! is_search() ) {                
          return $join;         
          }
          global $wpdb;         
          $join .= "JOIN $wpdb->wp_zyus_usermeta ON $wpdb->wp_zyus_posts.ID = $wpdb->wp_zyus_usermeta.wp_zyus_posts_id ";
          return $join;             
          } 

1 个回复
SO网友:Dinamicore

这就是解决方案:

<?php
/**
 * @package WordPress
 * @subpackage U-Design
 */
if (!defined(\'ABSPATH\')) exit; // Exit if accessed directly
get_header();
include(\'scripts/search_excerpt/ylsy_search_excerpt.php\');
$search = $_GET[\'s\'];
$all_users = new WP_User_Query(
array(
    \'role\' => \'dc_vendor\',
    \'meta_query\' => array(
        \'relation\' => \'OR\',
        array(
            \'key\' => \'_vendor_country\',
            \'value\' => $search,
            \'compare\' => \'=\'
        ),
    )
)
);
//echo \'<pre>\';
//print_r($all_users);
//echo \'</pre>\';
?>
    <div id="content-container" class="container_24">
        <div id="main-content" class="grid_24">
            <div class="main-content-padding">
                <?php udesign_main_content_top(is_front_page()); ?>
                <?php
                if ( ! empty( $all_users->results ) ) {
                    foreach ( $all_users->results as $user ) {
                        echo \'<p><a 
href="http://www.example.com/vendor/\'.$user->user_nicename.\'">\' . $user->display_name . \'</a></p>\';
                    }
                } else {
                    echo \'No users found.\';
                }
                wp_reset_query(); ?>
                <div class="clear"></div>
                <?php udesign_main_content_bottom(); ?>
            </div><!-- end main-content-padding -->
        </div><!-- end main-content -->
    </div><!-- end content-container -->
    <div class="clear"></div>
<?php
   get_footer();
无需加入usermeta表。

结束

相关推荐

Yoast类型错误,jQuery冲突?

Yoast 4.7版的更新带来了一个大问题。它不起作用,我不能“回滚”以前的版本。只有到版本2.3.5才能工作。以下是浏览器控制台中的错误:这看起来像是jQuery冲突。在有错误的页面中(wp admin/post.php)加载了jQuery 1.12.4和jQuery 1.11.3建议?