В моих функциях. php У меня есть форма сборки с WPAS, которая использует расширенные настраиваемые поля:
function project_gallery_filter_form() {
$args = array();
//$args['debug'] = true;
$args['wp_query'] = array( 'post_type' => array('project'),
'posts_per_page' => 32,
'orderby' => 'title',
'order' => 'ASC',
'submit_text' => 'GO',
);
$args['fields'][] = array( 'type' => 'search',
'placeholder' => 'Search by Project #, City, or State'
);
$products = get_field_object('field_5595540c6184c');
$allproducts = array();
foreach ($products['choices'] as $product)
{
if ($product != 'Select...') //if using checkbox, comment 'else' out
$allproducts[$product] = $product;
else
$allproducts[] = $product;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Products',
'format' => 'select',
'meta_key' => 'products',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'submit_text' => 'GO',
'values' => $allproducts
);
$applications = get_field_object('field_559551c77d1c6');
$allapplications = array();
foreach ($applications['choices'] as $application)
{
if ($application != 'Select...') //if using checkbox, comment 'else' out
$allapplications[$application] = $application;
else
$allapplications[] = $application;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Application',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'application',
'values' => $allapplications
);
$interiorFinishes = get_field_object('field_559731606f257');
$allcolors = array();
foreach ($interiorFinishes['choices'] as $color)
{
if ($color != 'Select...') //if using checkbox, comment 'else' out
$allcolors[$color] = $color;
else
$allcolors[] = $color;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Interior Finish',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'interior_finish',
'values' => $allcolors
);
$exteriorFinishes = get_field_object('field_559731716f258');
$allcolors = array();
foreach ($exteriorFinishes['choices'] as $color)
{
if ($color != 'Select...') //if using checkbox, comment 'else' out
$allcolors[$color] = $color;
else
$allcolors[] = $color;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Exterior Finish',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'exterior_finish',
'values' => $allcolors
);
$architecturalTypes = get_field_object('field_5597319f6f259');
$allArchitecturalTypes = array();
foreach ($architecturalTypes['choices'] as $architectural_type)
{
if ($architectural_type != 'Select...') //if using checkbox, comment 'else' out
$allArchitecturalTypes[$architectural_type] = $architectural_type;
else
$allArchitecturalTypes[] = $architectural_type;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Architectural Type',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'architectural_type',
'values' => $allArchitecturalTypes
);
$architecturalEnhancements = get_field_object('field_5ddc12499b723');
$allArchitecturalEnhancements = array();
foreach ($architecturalEnhancements['choices'] as $architectural_enhancement)
{
if ($architectural_enhancement != 'Select...') //if using checkbox, comment 'else' out
$allArchitecturalEnhancements[$architectural_enhancement] = $architectural_enhancement;
else
$allArchitecturalEnhancements[] = $architectural_enhancement;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Architectural Enhancement',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'architectural_enhancement',
'values' => $allArchitecturalEnhancements
);
$glazes = get_field_object('field_5ddc12c09b724');
$allglazes = array();
foreach ($glazes['choices'] as $glazing)
{
if ($glazing != 'Select...') //if using checkbox, comment 'else' out
$allglazes[$glazing] = $glazing;
else
$allglazes[] = $glazing;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Glazing',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'glazing',
'values' => $allglazes
);
$accessory = get_field_object('field_5ddc13099b725');
$allAccessories = array();
foreach ($accessory['choices'] as $accessories)
{
if ($accessories != 'Select...') //if using checkbox, comment 'else' out
$allAccessories[$accessories] = $accessories;
else
$allAccessories[] = $accessories;
}
$args['fields'][] = array( 'type' => 'meta_key',
'label' => 'Accessories',
'format' => 'select',
'relation' => 'OR',
'data_type' => 'ARRAY<CHAR>',
'compare' => 'LIKE',
'meta_key' => 'accessories',
'values' => $allAccessories
);
/*
$args['fields'][] = array( 'type' => 'orderby',
'format' => 'select',
'label' => 'Order by',
'values' => array('title' => 'Title',
'date' => 'Date Added') );
*/
/*
$args['fields'][] = array( 'type' => 'order',
'format' => 'radio',
'label' => 'Order',
'values' => array('ASC' => 'ASC', 'DESC' => 'DESC'),
'default' => 'ASC' );
*/
/*
$args['fields'][] = array( 'type' => 'posts_per_page',
'format' => 'select',
'label' => 'Results per page',
'values' => array(2=>2, 5=>5, 10=>10),
'default' => 10 );
*/
$args['fields'][] = array('type' => 'reset',
'title' => 'Reset',
'pre_html' => '<div class="row" style="float:left;width:100%;">');
$args['fields'][] = array('type' => 'html',
'value' => '<a class="button tiny reset" onclick="history.go(-1);">Back</a>');
$args['fields'][] = array( 'type' => 'submit',
'class' => '',
'submit_text' => 'GO',
'title' => 'GO',
'value' => 'GO',
'placeholder' => 'GO',
'post_html' => '</div>');
register_wpas_form('project-gallery-filter-form', $args);
}
Цель этой формы WPAS - позволить пользователям фильтровать сообщения по полям, которые я создал в расширенных настраиваемых полях. Нет проблем с приведенным выше кодом, но я считаю, что он уместен и необходим, если кто-то хочет помочь мне разобраться с этим.
Теперь у меня есть собственный шаблон страницы, созданный там, где эта форма фактически вызывается. , Пользователи переходят на страницу, заполняют форму, и она возвращает целую кучу постов, которые соответствуют выбранным им фильтрам.
То, что я пытаюсь сделать sh, это показать 'посты, которые вы можете как раздел, если вы заполняете форму WPAS, которую я создал, и она получает 0 результатов (это произойдет, если вы выберете слишком много фильтров, как и все мои поля ACF).
Я хочу сделать это, выбрав основное поле в форме WPAS («продукты»), а затем показывать сообщения с тем же значением, помеченные галочкой в бэкэнде с помощью расширенных настраиваемых полей. Я перепробовал много вещей, изложенных в отличной документации ACF, но не могу понять. Поскольку я не пытаюсь получить значение поля в сообщении, а вместо этого на обычной странице, я не добился успеха.