How IT

언제든지 물어보세요.

컨텐츠로 건너뛰기
  • 홈
  • Unix
  • Apple
  • Java
  • Android
  • C#
  • C++

메타 키가 존재하지 않는 모든 게시물 쿼리

특정 meta_key이 존재하지 않는 모든 게시물을 검색하여 작성한 쿼리를 얻으려고 합니다.

테스트중인 쿼리가 작동하지 않아서 해당 게시물을 찾는 데 문제가 있습니다.

해당 게시물을 얻는 데 사용하는 코드는 다음과 같습니다.

$args = array(
   'posts_per_page' => 18,
   'cat'=>1955,
   'post_status'=>'publish',
   'meta_query' => array(
                  array(
                     'key' => 'colors',
                     'compare' => 'NOT EXISTS'
                  ),
   ));      

query_posts($args);

키가있는 게시물이 없으면 아무것도 반환하지 colors않지만 ids키가 colors있을 때마다 (필요한 것과 반대 되는) 게시물이있는 게시물을 반환합니다 . 나는 EXIST대신 노력 했지만 운이 없다.

누군가 내가 쿼리와 같은 쿼리를 작성하는 올바른 방법을 알려 줄 수 있다면 감사하겠습니다.

감사!



답변

나는 이것으로 더 많은 테스트를했고, 솔직히 그것이 작동하지 않는 이유를 찾을 수 없다 (위의 코드가 단지 스 니펫이고 실제 코드가 아래 예제에 적합하지 않다면). 그러나 올바른 방향으로 이끌 수있는 몇 가지 사실을 발견했습니다.

1)이 메타 쿼리 자체는 “colors IS NULL”과 같습니다. 즉 postmeta 테이블에 해당 키가 설정되지 않은 게시물을 반환합니다. 이것은 위에 표시된 경우이며 작동해야합니다.

'meta_query' => array(
    array(
     'key' => 'colors',
     'compare' => 'NOT EXISTS' // this should work...
    ),
)

2) WordPress 3.9 이전에는 ‘관계’색인을 ‘OR’로 설정하면이 조건이 변경됩니다. 반대를 돌려줍니다. 이유를 묻지 마십시오. 이것은 여러 메타 쿼리를 수행 할 때 특히 중요합니다. 즉, ‘colors’키가 ‘blue'(또는 무엇이든)로 설정되었거나 전혀 설정되지 않은 게시물에 대해 처음에는 쿼리를 수행 할 수 없습니다. 아래 쿼리는 첫 번째 조건을 무시하고 두 번째 조건과 일치하는 조건 만 반환합니다.

'meta_query' => array(
   'relation' => 'OR',
    array(
     'key' => 'colors',
     'compare' => 'NOT EXISTS' // doesn't work
    ),
    array(
     'key' => 'colors',
     'value' => 'blue'
    )
)

3) 그러나 ‘값’을 설정하면 첫 번째 조건을 사용하여 WordPress를 속일 수 있습니다. 이는 (내가 알기로는 지금까지, 무시됩니다) 관련 값을 필요로하지 않지만, 설정해야 위해서는 NOT EXISTS어떤 영향을 미칠 조건.

'meta_query' => array(
   'relation' => 'OR',
    array(
     'key' => 'colors',
     'compare' => 'NOT EXISTS', // works!
     'value' => '' // This is ignored, but is necessary...
    ),
    array(
     'key' => 'colors',
     'value' => 'blue'
    )
)

이것은 WordPress 3.9까지 적용되었습니다. 여전히 이전 버전을 사용중인 경우이 방법은 실행 가능한 해결 방법입니다.


답변

사용자 정의 쿼리를 사용하면 다음과 같이 작동했습니다.

SELECT * FROM wp_posts as posts
            WHERE   posts.post_type     = 'post'
            AND NOT EXISTS (
              SELECT * FROM `wp_postmeta`
               WHERE `wp_postmeta`.`meta_key` = "your_meta_key"
                AND `wp_postmeta`.`post_id`=posts.ID
            ) 


답변


이 글은 wordpress 카테고리에 분류되었고 custom-post-types, post-meta, wp-query 태그가 있으며 소장 마님에 의해 2022-11-01에 작성되었습니다.

글 네비게이션

← 각 패키지를로드 경로에 추가해야하는 이유는 무엇입니까? (또는 init 파일에 ‘package’필요) 문제 메뉴에서 패키지를 설치할 때마다 requireinit 파일에서 Hardie 판자 사이딩에 조명, 초인종 등을 장착하는 방법 사용하는 것입니다. →

태그

  • android
  • apt
  • bash
  • boot
  • c#
  • c++
  • code-golf
  • command-line
  • debian
  • firefox
  • git
  • google-chrome
  • hard-drive
  • html
  • java
  • keyboard
  • linux
  • mac
  • macos
  • math
  • memory
  • microsoft-excel
  • mysql
  • networking
  • performance
  • permissions
  • python
  • r
  • regression
  • security
  • shell
  • sql-server
  • ssh
  • string
  • terminal
  • ubuntu
  • unity
  • usb
  • vim
  • virtualbox
  • windows
  • windows-7
  • windows-8
  • windows-10
  • windows-xp

최신 글

  • Windows에서 파티션 크기를 조정 한 후 APFS 파티션이 손실 됨 00 80
  • App Store에서 El Capitan을 강제로 다시 다운로드 하시겠습니까? 업데이트 된 플래시 드라이브 설치 프로그램을 빌드하기
  • 기존 시스템에 부팅 드라이브로 SSD 추가 백업에 큰 관심이 없습니다. 내가 걱정하는 것은이
  • geoJSON featureCollection에 properties 요소를 갖는 것이 유효합니까?
  • 추세를 식별하기 위해 신호 처리 원리를 신중하게 사용 매우 시끄러운 장기 데이터에서 추세를

카테고리

  • Android
  • Apple
  • C#
  • C++
  • cooking
  • cs
  • cstheory
  • diy
  • drupal
  • electronics
  • emacs
  • Gis
  • Git
  • Html
  • Java
  • Javascript
  • magento
  • photo
  • Python
  • raspberrypi
  • scicomp
  • Server
  • Software
  • Sql
  • stats
  • Superuser
  • ubuntu
  • Unix
  • vi
  • webapps
  • webmasters
  • wordpress
  • 게임개발
  • 코딩
Proudly powered by WordPress
Go to mobile version
Close