반응형
키워드 제목, 내용 또는 태그에 존재하는 경우 Word press get_posts
검색 키워드와 일치하는 투고 목록을 얻기 위해 get_posts를 사용하고 있습니다.문제는 검색 키워드와 일치하는 투고 목록입니다.get_posts
의s
파라미터는 기본적으로 태그를 검색하지 않고tag_slug__in
키워드가 태그가 아닌 제목에 있는 경우 동작하지 않습니다.
검색 조건은 다음과 같습니다.
- 제목에 키워드가 있는 경우 투고 반환
- 콘텐츠에 키워드가 있는 경우 투고 반환
- 키워드가 투고와 관련된 태그인 경우 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;
사용한 적이 있다wpdb
query 를 눌러 결과를 가져옵니다.투고 및 분류표와 결합하여 다음 방법으로 명확한 결과를 얻을 수 있습니다.$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
반응형
'source' 카테고리의 다른 글
컴포넌트 템플릿에서 요소를 선택하려면 어떻게 해야 합니까? (0) | 2023.02.22 |
---|---|
Azure 함수에서 JSON을 반환하는 방법 (0) | 2023.02.22 |
jq를 사용하여 CSV에서 JSON으로 (0) | 2023.02.22 |
WPML의 "String translation"에 문자열이 표시되지 않는 이유는 무엇입니까? (0) | 2023.02.22 |
스프링 부츠 + 스프링 탑재 (IntelliJ, Gradle) (0) | 2023.02.22 |