Php 通过get_字段()引用ACF中的Post对象
我使用高级自定义字段,并且有一个类型为“Post Object”的关系字段 然后我在我的“timetracker.php”文件中得到了这个:Php 通过get_字段()引用ACF中的Post对象,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我使用高级自定义字段,并且有一个类型为“Post Object”的关系字段 然后我在我的“timetracker.php”文件中得到了这个: <?php global $wpdb; $sql_query = 'SELECT job, time_id, employee, date_entry, meta_value, post_id, duration, meta_key FROM ' . $wpdb->prefix . 'allocat
<?php
global $wpdb;
$sql_query = 'SELECT job, time_id, employee, date_entry, meta_value, post_id, duration, meta_key
FROM ' . $wpdb->prefix . 'allocation AS al
JOIN ' . $wpdb->prefix . 'postmeta AS posts ON al.job = posts.meta_value
WHERE employee = "' . wp_get_current_user()->display_name . '"
ORDER BY time_id
DESC LIMIT 10 ';
?>
<form method="post">
<table>
<tr>
<th>Pick</th>
<th>Date</th>
<th>Client</th>
<th>User</th>
<th>Job</th>
<th>Minutes</th>
</tr>
<?php
require_once(ABSPATH . 'wp-includes/pluggable.php');
$current_user = wp_get_current_user();
global $wpdb;
$results = $wpdb->get_results($sql_query);
foreach($results as $result){ ?>
<tr>
<td><input type="radio" name="delete" value="<?php echo $result->time_id; ?>"></td>
<td><?php echo date('Y-m-d', strtotime($result->date_entry));?></td>
<td><?php echo **get_field('client',$result->post_id)->name**;?></td>
<td><?php echo $result->employee;?></td>
<td><?php echo $result->job;?></td>
<td><?php echo $result->duration;?></td>
</tr>
这给了我:“注意:尝试获取非对象的属性‘name’。”
它也给了我同样的通知,另一次暗示“timetracker.php”
当我这样做时:
$no = $outcomes[0]->post_id;
echo $no . '<br>';
它给了我:“213”
这似乎有点正确。在phpmyadmin中的wp_postETA表中,post_id 242的meta_值实际上是213
这是怎么回事?为什么它的工作方式与“timetracker.php”文件中的工作方式不同?ACF允许您自定义希望它返回的“格式化”值—这可能只是post ID,也可能是完整的post对象
->name
仅在获得后者的情况下才有效get_字段
将返回格式化的值,除非通过第三个参数明确指定其他值。看起来您在这里通过调用get_field
的同一种方式得到了两种不同类型的响应,但这并不能用我们目前掌握的信息来解释。
$no = $outcomes[0]->post_id;
echo $no . '<br>';
echo get_field('client',$no);