我為“作品集”創建了一個自定義帖子型別,其中包含一個帶有許多額外欄位的自定義元框,其中一個是我用來確定此帖子型別是否包含案例研究的復選框,但我已經點擊了一個障礙,我看不出我哪里出錯了。復選框的輸出是“是”或“”。
我的 metabox 構建中的設定是:
<input type="checkbox" name="rccustom_fields[case_study]" value="yes" <?php if ( isset($meta['case_study']) && $meta['case_study'] === 'yes' ) echo 'checked'; ?>>
我可以通過輸出看到值按預期存在:
$meta = get_post_meta( $post->ID, 'rccustom_fields', true );
print_r($meta);
但是,當我使用 args 拉出一個基本的 WP 查詢來過濾這些結果時:
$args = array(
'numberposts' => -1,
'post_type' => 'portfolio',
'meta_key' => 'case_study',
'meta_value' => 'yes',
我沒有得到任何回報,即使執行 print_r 表明元值確實存在并且等于“是”。(如果我注釋掉 meta_key/meta_value 行,來自自定義帖子型別的所有帖子都會顯示)
有人看到我在這里看不到的東西嗎?
uj5u.com熱心網友回復:
試試下面的代碼,它可能對你有幫助。
$args_portfolio = array (
'post_type' => 'portfolio',
'posts_per_page' => -1,
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'case_study',
'value' => 'yes',
'compare' => '=',
),
),
);
$data_portfolio = new WP_Query( $args_portfolio );
uj5u.com熱心網友回復:
如果它對任何人有幫助......我無法找到一種優雅的方式將這個額外的過濾器合并到我的查詢中,但是因為這個專案的自定義帖子型別將有很少(少于 30 個)帖子,我選擇了只需在我的回圈中添加一個 IF 陳述句以僅過濾與該case_study欄位匹配的帖子:
$portfolio_query = new WP_Query( $args_portfolio );
if( $portfolio_query->have_posts() ) :
echo '<ul>';
while( $portfolio_query->have_posts() ) : $portfolio_query->the_post();
$meta = get_post_meta( $post->ID, 'rccustom_fields', true );
if ( isset( $meta['case_study'] ) ) :
the_title();
endif;
endwhile;
echo '</ul>';
endif;
以這種方式來做而不是找到一種過濾查詢的方法對我來說感覺很笨拙,但為了繼續這個頁面,它確實如此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/375142.html
標籤:WordPress的 自定义帖子类型 元框
