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

标签 php mysql wordpress

我想创建一个页面,以按字母顺序排列的列表显示 3 个 ACF 值。我有一个自定义帖子类型 ="product"并想显示以下 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 字段值时,我没有得到任何输出。请指教。

最佳答案

那是因为您正在查询数据库中的细节……那里不存在这些字段。 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 字段

关于php - WP 显示页面上所有帖子的 ACF 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47291529/

相关文章:

php - 找到第一个达到目标的用户

php - Laravel 5.4 Eloquent SUM 和 ORDER BY 数据透视表列

javascript - 更改选择框时计算价格变化

javascript - 根据链接 url 禁用悬停在图像上

php - 应用程序中的错误处理函数

php - 判断 PHP 的 DateTime 是否为午夜

php - Laravel 搜索关系

mysql - 当原始的 Laravel 迁移过时时,你会保留它们吗?

php - 一定时间后通过PHP执行SQL

html - 修改wordpress菜单