У меня есть поля настройки и подполя с использованием Advanced Custom Fields (ACF). Структура похожа на:
Field: Pet Details
- Sub-Field: Pet Name (text)
- Sub-Field: Pet Birthday (date picker)
- Sub-Field: Pet Gender (taxonomy, select)
- Additional...
Я смог использовать их в своем пользовательском типе записи (/ cpt_slug / post_title), используя функции get_field()
, get_sub_field()
, однако я не смог использовать функции ACF по умолчанию (get_field()
, get_sub_field()
и т. д. c) в сочетании с дополнительными страницами, на которых отображается эта информация - в данном случае domain.com/account
(страница моего аккаунта woocommerce), что хорошо для меня Я рад использовать WP_Query
.
. Хотя у меня есть рабочий код ниже, мне нужно настроить $variable = get_post_meta( $pet->ID, field_sub_field, true )
для каждого подполя acf. Учитывая структуру массива,
Наилучший результат, который я мог бы получить, был echo $details['pet_details_pet_name'][0]
, который выдает 'Cooper' (правильно), но с моим ограниченным знанием массивов, есть ли шанс, что '0' будет когда-либо становился '1' и не позволял этому работать? Я не верю, что cpt / acf когда-нибудь поместит второе значение в массив, но я хотел бы услышать ваши мысли.
Код
global $current_user;
$query = new WP_Query ( array (
'post_type' => 'audp_pets',
'author' => $current_user->ID,
'order' => 'ASC'
) );
$pets = $query->posts;
if ( $pets ) {
foreach ( $pets as $pet ) {
var_dump ( $pet );
?><hr><?php
echo "\$pet->post_title = " . $pet->post_title . '<br />';
?><hr><?php
$details = get_post_meta( $pet->ID );
$pet_name = get_post_meta( $pet->ID, 'pet_details_pet_name', true );
echo "\$pet_name = " . $pet_name . '<br />';
?><hr><?php
var_dump ( $details );
}
wp_reset_postdata();
}
Выходы (Источник)
object(WP_Post)#13185 (24) {
["ID"]=>
int(952)
["post_author"]=>
string(1) "1"
["post_date"]=>
string(19) "2020-01-16 16:24:17"
["post_date_gmt"]=>
string(19) "2020-01-16 05:24:17"
["post_content"]=>
string(0) ""
["post_title"]=>
string(6) "AA0AA0"
["post_excerpt"]=>
string(0) ""
... (additional fields)
}
(N.B -- $pet->post_title = AA0AA0)
array(56) {
["_edit_last"]=>
array(1) {
[0]=>
string(1) "1"
}
["_edit_lock"]=>
array(1) {
[0]=>
string(12) "1579152259:1"
}
["pet_details_pet_name"]=>
array(1) {
[0]=>
string(6) "Cooper"
}
["_pet_details_pet_name"]=>
array(1) {
[0]=>
string(19) "field_5e1189ab705b2"
}
["pet_details_pet_birthday"]=>
array(1) {
[0]=>
string(8) "20130313"
}
... (additional fields)
}
(N.B. $pet_name = Cooper)
Заранее спасибо.