【发布时间】:2013-09-23 18:26:33
【问题描述】:
我在 Wordpress 中有一个搜索表单,可以搜索自定义帖子类型中的所有帖子标题、内容和自定义字段。但它不会按作者搜索。我希望搜索关键字与显示名称匹配以继续并输出该作者的任何帖子。
这是我当前的代码(其中的 display_name 部分显然是错误的,但说明了我想要完成的任务)。除了按 display_name 部分获取帖子外,一切正常。任何帮助或指导表示赞赏:)
// Code originally modified
// from http://www.deluxeblogtips.com/2012/04/search-all-custom-fields.html
global $wpdb;
// Gets the ?crs= search from the submitted form
$keyword = sanitize_text_field( $_GET['crs'] );
$keyword = '%' . like_escape( $keyword ) . '%';
// Search in all custom fields
$post_ids_meta = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT post_id FROM {$wpdb->postmeta}
WHERE meta_value LIKE '%s'
", $keyword ) );
// Search in post_title and post_content
$post_ids_post = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT ID FROM {$wpdb->posts}
WHERE post_title LIKE '%s'
OR post_content LIKE '%s'
", $keyword, $keyword ) );
// Search in User Table for Display Name
// This is where I'm not sure what how to get the posts by display_name
$post_ids_user = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT post_id FROM {$wpdb->users}
WHERE display_name LIKE '%s'
", $keyword ) );
$post_ids = array_merge( $post_ids_meta, $post_ids_post, $post_ids_user );
// Query arguments for WP_Query
$args = array(
'post_type' => 'courses',
'post_status' => 'publish',
'limit' => '',
'post__in' => $post_ids,
);
【问题讨论】:
-
据我所知,据我所知,它应该写成
%%keyword%%。 %% 是转义序列,被解析为 %。$wpdb->prepare将正确解析它。这是第一眼。 -
你的意思是在这个部分吗?我不确定你指的是什么或为什么它有帮助。抱歉我在这里缺乏知识 :) '$post_ids_user = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT post_id FROM {$wpdb->users} WHERE display_name LIKE '%s' ", $keyword ) ) ;'