首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >现有帖子的默认值

现有帖子的默认值
EN

Stack Overflow用户
提问于 2016-11-09 02:06:28
回答 5查看 3.2K关注 0票数 5

我已经使用高级自定义字段在网站上创建了一个新区域。该区域显示在新帖子和修改后的帖子上,但不显示在旧帖子上。如何才能以最小的努力在所有帖子上显示它?

2013 post中,我看到当时没有解决方案。

代码语言:javascript
运行
复制
<div id="advert">
    <a href="<?php echo get_field( 'add_ad_link' ); ?>">
        <img src="<?php echo get_field( 'ad_image' ); ?>">
    </a>
</div>
EN

回答 5

Stack Overflow用户

发布于 2016-11-10 18:47:20

您可以使用Benoti答案中的想法并将此代码片段粘贴到您的functions.php中。对于您的情况,方法是:

代码语言:javascript
运行
复制
add_action('admin_init', 'set_default_acf_values');

function set_default_acf_values() {

    $args = [
        'post_type'      => 'post',
        'posts_per_page' => -1,
    ];

    $posts = get_posts($args);

    foreach($posts as $post) {
        if (empty(get_field('add_ad_link', $post->ID))) {
             update_field('add_ad_link', DEFAULT_AD_LINK, $post->ID);
        }
        if (empty(get_field('ad_image', $post->ID))) {
             update_field('ad_image', DEFAULT_AD_IMAGE, $post->ID);
        }
    }
}

为了简单起见,您的add_ad_image字段应该设置为Image URL

请注意,此代码将在您每次进入管理区时执行,因此在第一次进入管理区之后,最好将其删除(因为所有帖子现在都将具有这些字段的值)。

票数 5
EN

Stack Overflow用户

发布于 2016-11-09 03:48:55

我不使用ACF,但您可以循环遍历所有posts,并使用WordPress函数get_post_metaupdate_post_meta应用自定义字段。

一个非常简单的例子,粘贴到functions.php中:

代码语言:javascript
运行
复制
add_action('admin_init', 'apply_my_custom_field');

function apply_my_custom_field(){
   if(!get_option('se_40493675')){ 
       $args = array(
              'post_type'=> 'post',
              'posts_per_page' => -1,
              'post_status'=> 'publish'
       );
       $posts = get_posts($args);

       foreach($posts as $post){
           if(!get_post_meta($post->ID, 'your_custom_field_name')){
              update_post_meta($post->ID, 'your_custom_field_name', 'your_custom_field_value');
           }
       }
       update_option('se_40493675', 1);
  }
}

随心所欲地更改$args,即:'post_status'=> array('publish', 'pending', 'draft')

票数 3
EN

Stack Overflow用户

发布于 2016-11-10 19:49:51

也许你可以将acf的默认值用于还没有该字段的值的帖子。

如果您知道字段键如下所示,则可以获取ACF的默认值:

代码语言:javascript
运行
复制
$field = get_field_object('Your_acf_field_key'));
$default_value = $field['default_value'];

要获取acf密钥,您必须查询数据库。我从这里得到了我的查询:How to get Advanced Custom Fields field key from WordPress database?

因此,如果只有fieldname,则获取默认值的代码将为:

代码语言:javascript
运行
复制
function get_acf_key($field_name) {
    global $wpdb;
    return $wpdb->get_var("
        SELECT `meta_key`
        FROM $wpdb->postmeta
        WHERE `meta_key` LIKE 'field_%' AND `meta_value` LIKE '%$field_name%';
        ");

}

$field = get_field_object(get_acf_key('Your_acf_name'));
$default_value = $field['default_value'];

请注意,acf密钥可能会在不同的环境中更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40493675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档