现有帖子的默认值

5 php wordpress advanced-custom-fields

我使用高级自定义字段在站点上创建了一个新区域。该区域显示在新帖子和修改后的帖子上,但不显示在旧帖子上。可以做些什么来以最小的努力在所有帖子上显示它?

2013年的一篇帖子中,我看到当时没有解决方案。

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

Jor*_*bot 5

您可以使用 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('ad_image', $post->ID))) {
             update_field('ad_image', DEFAULT_AD_IMAGE, $post->ID);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您的add_ad_image字段应设置为图像 URL以保持简单。

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


小智 -1

您可以通过批量编辑然后保存/更新来完成。

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

请告诉我。