在 WordPress 中自动获取网站某个自定义字段的所有值,可以根据不同的使用场景,通过以下几种方式实现:

1. 使用 WordPress 自带函数


如果不使用插件,可通过 get_posts 函数结合 get_post_meta 函数来获取所有文章中某个自定义字段的值。以下是一个示例代码,你可以将其添加到主题的 functions.php 文件或者自定义插件中:
收起
php
function get_all_custom_field_values($field_name) {
    $values = array();
    // 获取所有文章
    $args = array(
        'post_type' => 'post', // 可以修改为你需要的文章类型,如 'page' 等
        'posts_per_page' => -1 // 获取所有文章
    );
    $posts = get_posts($args);

    foreach ($posts as $post) {
        // 获取每篇文章的自定义字段值
        $field_value = get_post_meta($post->ID, $field_name, true);
        if ($field_value) {
            $values[] = $field_value;
        }
    }
    return $values;
}

// 使用示例
$custom_field_name = 'your_custom_field_name';
$all_values = get_all_custom_field_values($custom_field_name);
print_r($all_values);

上述代码定义了一个名为 get_all_custom_field_values 的函数,它接受一个自定义字段名作为参数。函数内部使用 get_posts 获取所有文章,然后遍历每篇文章,使用 get_post_meta 函数获取指定自定义字段的值,并将其添加到 $values 数组中,最后返回该数组。

2. 使用 WP_Query 类


WP_Query 类是 WordPress 中功能强大的查询类,也可以用来实现相同的功能,代码示例如下:
收起
php
function get_all_custom_field_values_with_wp_query($field_name) {
    $values = array();
    $query = new WP_Query(array(
        'post_type' => 'post',
        'posts_per_page' => -1
    ));

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $field_value = get_post_meta(get_the_ID(), $field_name, true);
            if ($field_value) {
                $values[] = $field_value;
            }
        }
        wp_reset_postdata();
    }
    return $values;
}

// 使用示例
$custom_field_name = 'your_custom_field_name';
$all_values = get_all_custom_field_values_with_wp_query($custom_field_name);
print_r($all_values);

这个函数使用 WP_Query 类来查询文章,通过 have_posts 和 the_post 遍历每篇文章,获取自定义字段的值并存储在数组中,最后使用 wp_reset_postdata 恢复原始的文章数据。

3. 如果使用 Advanced Custom Fields(ACF)插件


若你使用了 ACF 插件来管理自定义字段,可以使用 get_posts 结合 ACF 的 get_field 函数来获取值,示例代码如下:
收起
php
function get_all_acf_custom_field_values($field_name) {
    $values = array();
    $posts = get_posts(array(
        'post_type' => 'post',
        'posts_per_page' => -1
    ));

    foreach ($posts as $post) {
        $field_value = get_field($field_name, $post->ID);
        if ($field_value) {
            $values[] = $field_value;
        }
    }
    return $values;
}

// 使用示例
$custom_field_name = 'your_custom_field_name';
$all_values = get_all_acf_custom_field_values($custom_field_name);
print_r($all_values);

此代码与前面的类似,只是使用了 ACF 的 get_field 函数来获取自定义字段的值。
通过以上方法,你可以方便地获取 WordPress 网站中某个自定义字段的所有值。根据实际情况选择合适的方法,并将代码添加到相应的文件中即可。