Php 通过get_字段()引用ACF中的Post对象

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

我使用高级自定义字段,并且有一个类型为“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 . '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);