通过键从“自定义帖子”类型获取特定的自定义字段

时间:2018-06-19 23:10:08

标签: php wordpress

我一直在搜索,花了几天时间,但是没有找到解决方案。我正在使用代码按键号获取特定的自定义字段值(请参见下面的代码),但是我想按键名获取自定义字段的值,例如,键名是“ post-code”。

注意: lead_custom_field 是一个自定义字段。

<?php
$custom_fields = get_post_custom($post_id);
$my_custom_field = $custom_fields['lead_custom_field'];
foreach ( $my_custom_field as $key => $value ) {
    $a1 = unserialize( $value );
    echo '<td>'. $a1[1]['value'] . '</td>';
}
?>

请帮助,我被困了这么长时间。

2 个答案:

答案 0 :(得分:2)

get_post_custom()返回与帖子关联的所有自定义字段。

您可以使用get_post_meta(),它将通过键返回单个值。

以下内容将输出您的lead_custom_field自定义字段键的值。

var_dump( get_post_meta( $post_id, 'lead_custom_field', true ) );

似乎您正在lead_custom_field中存储多维数组。您应该考虑将数据重组为更合适的格式,例如:

array(
    'post-code' => 12345,
    'first-name' => 'John',
    'last-name' => 'Doe
)

哪些可以让您简单地做到:

$data = get_post_meta( $post_id, 'lead_custom_field', true );
echo 'Post Code: '. $data['post-code'];

在不重构如何的情况下保存数据,您将需要继续使用某种循环,因为根据我们的聊天记录,您可以:

  • 名为“ key”的键,其值为“邮政编码”
  • 名为“ value”的键,其值为“ 12345”

所有未命名数组内。因此,除非您从根本上更改了存储数据的方式,否则您需要遍历 。像我上面所说的那样,或者在单独的自定义字段中。

答案 1 :(得分:-1)

我的一位朋友帮助我,他是一位出色的php开发人员。如果有人在此发布答案,则作为答案。

<?php
$post_id = get_the_ID();
$custom_fields = get_post_custom($post_id);
$my_custom_field = unserialize( $custom_fields['lead_custom_field'][0] );
$params = [];
foreach ($my_custom_field as $k) {
    $params[ $k["key"] ] = $k["value"];
}
echo '<td>' . $params["post-code"] . '</td>';
?>