WP显示页面上所有帖子的ACF值

时间:2017-11-14 17:09:21

标签: php mysql wordpress

我想创建一个在按字母顺序排列的列表中显示3个ACF值的页面。我有一个自定义的帖子类型=“产品”,并希望显示以下twi字段(两者都是ACF文本字段)1。vendor_or_brand_name和2. product_url

我可以输出产品帖子类型中的所有帖子标题,如下所示:

function output_product_list() {
    global $wpdb;
    $custom_post_type = 'product'; 
    $results = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_type = %s and post_status = 'publish'", $custom_post_type ), ARRAY_A );
    if ( ! $results )
            return;
            $output = '<ul id="products">';
            foreach( $results as $index => $post ) {
                    $output .= '<li id="' . $post['ID'] . '">' . $post['post_title'] . '</li>';
                }
            $output .= '</ul>'; // end of select element
            return $output;
}

但是当我尝试将'post_title'修改为任一ACF字段值时,我得不到输出。请指教。

2 个答案:

答案 0 :(得分:2)

那是因为你在查询数据库中的细节......那里的字段不存在。 ACF具有获取字段值的现有功能,例如get_field()

所以在你的情况下:

function output_product_list() {
    global $wpdb;
    $custom_post_type = 'product'; 
    $results = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_type = %s and post_status = 'publish'", $custom_post_type ), ARRAY_A );
    if ( ! $results )
            return;
            $output = '<ul id="products">';
            foreach( $results as $index => $post ) {
                    $output .= '<li id="' . $post['ID'] . '">' . get_field('ACF_FIELD_NAME',$post['ID']) . '</li>';
                }
            $output .= '</ul>'; // end of select element
            return $output;
}

务必将ACF_FIELD_NAME更改为您在WP Admin中命名为ACF字段的内容

答案 1 :(得分:1)

File "/home/reinaldo/Documentos/Code/ti/bin/autosub", line 136
print "The given file does not exist: {0}".format(filename)
^
SyntaxError: invalid syntax