0

post_title LIKE %some_title% を検索するために、WP_Query (コードの下) にフィルターを追加しようとしています。

$args = array(
    'post_type' => 'product',
    'posts_per_page' => $page_size,
    'paged' => $page,
    'post_status'      => 'publish',
    'orderby'          => 'title', 
    'order'            => 'ASC',

  );

  $result = new WP_Query($args);

商品タイトルと $some_title を一致させるフィルターを追加するには?

4

1 に答える 1

3

この方法で試すことができます

$query = "
        SELECT      *
        FROM        $wpdb->posts
        WHERE       $wpdb->posts.post_title LIKE '$param2%'
        ORDER BY    $wpdb->posts.post_title
";
$wpdb->get_results($query);

代替方法と標準方法

add_filter( 'posts_where', 'wpse18703_posts_where', 10, 2 );
function wpse18703_posts_where( $where, &$wp_query )
{
    global $wpdb;
    if ( $wpse18703_title = $wp_query->get( 'wpse18703_title' ) ) {
        $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'' . esc_sql( like_escape( $wpse18703_title ) ) . '%\'';
    }
    return $where;
}

このように使う

$args = array(
    'post_type' => 'product',
    'wpse18703_title' => 'your string',
    'posts_per_page' => $page_size,
    'paged' => $page,
    'post_status'      => 'publish',
    'orderby'          => 'title', 
    'order'            => 'ASC',

  );
 $result = new WP_Query($args);
于 2013-04-19T10:27:35.077 に答える