source

키워드 제목, 내용 또는 태그에 존재하는 경우 Word press get_posts

manycodes 2023. 2. 22. 22:48
반응형

키워드 제목, 내용 또는 태그에 존재하는 경우 Word press get_posts

검색 키워드와 일치하는 투고 목록을 얻기 위해 get_posts를 사용하고 있습니다.문제는 검색 키워드와 일치하는 투고 목록입니다.get_postss 파라미터는 기본적으로 태그를 검색하지 않고tag_slug__in키워드가 태그가 아닌 제목에 있는 경우 동작하지 않습니다.

검색 조건은 다음과 같습니다.

  1. 제목에 키워드가 있는 경우 투고 반환
  2. 콘텐츠에 키워드가 있는 경우 투고 반환
  3. 키워드가 투고와 관련된 태그인 경우 Return post.

어떤 아이디어라도 좋아요.Search Everything 플러그인을 사용해 봤지만 WordPress의 기본 검색 기능에서만 작동하는 것 같습니다.

아래 코드는 제가 시도한 내용을 간략화한 것입니다.이것이 3가지 기준을 모두 만족시키는 것은 아닙니다.

<?php

/* Set global query parameters */
$image_args = array(
    'posts_per_page' => (isset($_GET['show_all']) && $_GET['show_all'] == 'true')? 100000 : 20,
    'post_type' => 'attachment',
    'post_mime_type' => array('image/jpeg', 'image/png'),
    'meta_key' => 'language',
    'meta_value' => "(^".$languages."$|\"".$languages."\"\;)",
    'meta_compare' => 'REGEXP',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'media_category',
            'field' => 'term_id',
            'terms' => array($gallery_filter, $hotel->term_id),
            'operator' => 'AND',
        ),
    ),
);

/* If page numbert given, add offet */
if(!empty($page_no))
    $images_args['offset'] = 20*((int)$page_no-1);


/* If search term submitted, add it to the s parameter */
if(isset($_GET['search'])){
    $image_args['tag_slug__in' = explode(" ", $_GET['search']);
    $image_args['s'] = urldecode($_GET['search_term']);
}

독자적인 쿼리를 사용할 수 있습니다.다음은 예를 제시하겠습니다.

$querystr="
    SELECT *
        FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->term_taxonomy, $wpdb->terms
            WHERE ($wpdb->terms.name = '$s'
            OR $wpdb->posts.post_content LIKE '%$s%'
        OR $wpdb->posts.post_title LIKE '%$s%')
        AND $wpdb->posts.ID = $wpdb->term_relationships.object_id
        AND $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id
        AND $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
        ORDER BY $wpdb->posts.post_date DESC
";

$pageposts = $wpdb->get_results($querystr, OBJECT_K);

foreach ($pageposts as $post): setup_postdata($post);
    echo the_title() . '<br /><br />';
endforeach;

사용한 적이 있다wpdbquery 를 눌러 결과를 가져옵니다.투고 및 분류표와 결합하여 다음 방법으로 명확한 결과를 얻을 수 있습니다.$search_title이게 먹히길 바라.:)

global $wpdb;
$querystr= "SELECT DISTINCT $wpdb->posts.* FROM $wpdb->posts
                LEFT JOIN $wpdb->term_relationships
                    ON ( $wpdb->posts.ID = $wpdb->term_relationships.object_id )
                LEFT JOIN $wpdb->term_taxonomy
                    ON ( $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id )
                LEFT JOIN $wpdb->terms
                    ON ( $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id ) 

                WHERE ( $wpdb->terms.name LIKE '%$search_title%'
                    OR $wpdb->posts.post_content LIKE '%$search_title%'
                    OR $wpdb->posts.post_title LIKE '%$search_title%' )
                    AND $wpdb->posts.post_status = 'publish'
                    AND $wpdb->posts.post_type = 'product' 
                    ORDER BY $wpdb->posts.post_title ASC";

$query_object = $wpdb->get_results($querystr);

Post Clauses 필터 Wordpress 오퍼를 확인하십시오.MySQL 문을 WP 쿼리에 직접 연결할 수 있습니다.

언급URL : https://stackoverflow.com/questions/31613287/wordpress-get-posts-if-keyword-exists-in-title-content-or-tag

반응형