2016-11-08 16 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のデフォルト値を取得することができます

:ACFキーを取得するには

$field = get_field_object('Your_acf_field_key')); 
$default_value = $field['default_value']; 

を、あなたは、データベースを照会する必要があります。私はここから私のクエリを得た: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キーが異なる環境で変更できることに注意してください。

関連する問題