2016-11-08 125 views
2

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

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

<div id="advert"> 
    <a href="<?php echo get_field('add_ad_link'); ?>"> 
     <img src="<?php echo get_field('ad_image'); ?>"> 
    </a> 
</div> 

回答

-2

你可以通过批量编辑然后保存/更新。

转到您的网站管理员。然后从管理菜单的“帖子”中选择“所有帖子”。然后选中“批量操作”框下面的“标题”复选框。现在您已选择该页面内的所有帖子(1-20)。然后从“批量操作”框中选择“编辑”。然后点击“应用”。然后点击“更新”(位于右下角)。重复所有旧帖子。 就是这样。然后该区域将显示在旧帖子中。

请让我知道。

0

我不使用ACF,但可以通过所有帖子循环并应用自定义字段(如果不存在),使用WordPress功能get_post_metaupdate_post_meta

一个很简单的例子,在functions.php的粘贴:

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')

1

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

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('add_ad_link', $post->ID))) { 
      update_field('ad_image', DEFAULT_AD_IMAGE, $post->ID); 
     } 
    } 
} 

add_ad_image场应设置为图像URL保持这个简单。

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

0

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

你可以得到一个ACF的默认值,如果你知道这样的关键领域:

$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?

所以,如果你只有字段名,你的代码来获取默认值是:

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键可以在不同的环境而改变。