私はACFプラグインを使用して、カスタム投稿タイプ(プロジェクト)に適用されるカスタムフィールドを作成しています。私のfunctions.phpファイルで私はカスタムフィールドを使って私のカスタム投稿タイプアーカイブの順序を変更するためにpre_get_postsを使おうとしています。
function apply_projects_query_filter ($query)
{
if (is_admin()) {
return $query;
}
if (is_archive() && $query->query_vars['post_type'] == 'projects' && $query->is_main_query()) {
$query->set('orderby', 'meta_value');
$query->set('meta_key', 'project_status');
$query->set('order', 'DESC');
}
return $query;
}
add_action('pre_get_posts', 'apply_projects_query_filter');
私のproject_statusカスタムフィールドは0または1の可能な値を持っています。上記のコードを使用することは全く結果を返しません。何がおかしいのですか?
その理由は定かではありませんが、meta_queryを使用して別のフィルタを追加することで、すべて機能し始めました。 project_updateフィールドが設定されておらず、project_status順に並べられている投稿のみをカスタム投稿タイプアーカイブに入れます。これは私がしたことです。
$meta_query = array(
array(
'key'=>'project_update',
'value'=>'1',
'compare'=>'!=',
)
);
$query->set('meta_query', $meta_query);