我使用高级自定义字段在网站上创建了一个新区域。该区域显示在新帖子和修改后的帖子上,但不显示在旧帖子上。如何以最小的努力在所有帖子上展示它?
在2013 post我看到当时没有解决方案。
<div id="advert">
<a href="<?php echo get_field( 'add_ad_link' ); ?>">
<img src="<?php echo get_field( 'ad_image' ); ?>">
</a>
</div>
答案 0 :(得分:2)
我不使用ACF,但您可以循环浏览所有帖子并使用WordPress函数get_post_meta
和update_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 :(得分:2)
您可以使用Benoti答案中的想法并将此片段粘贴到npm
中。您的案例的方法是:
npm
您的functions.php
字段应设置为图片网址,以保持此简单。
请注意,每次进入管理区域时都会执行此代码,因此在第一次删除之后最好将其删除(因为所有帖子现在都有这些字段的值)。
答案 2 :(得分: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键可以在不同的环境中更改。
答案 3 :(得分:0)
对于遇到此问题的任何人,我发现的最佳解决方案是以下工具:https://github.com/mcguffin/acf-quick-edit-fields
这为我节省了一两个小时的手动更新181个帖子的时间。安装完该插件后,我编辑了ACF字段并选中了“允许以批量编辑模式编辑此字段”选项,然后就可以批量编辑帖子并更新该字段。
答案 4 :(得分:-1)
您可以通过批量修改然后保存/更新来完成。
转到您的网站管理员。然后从管理员菜单中的“发布”中选择“全部发布”。然后选中“批量操作”框下面的“标题”复选框。现在您已选择该页面中的所有帖子(1-20)。然后从“批量操作”框中选择“编辑”。然后单击“应用”。然后单击“更新”(位于右下角)。重复所有旧帖子。 就这样。然后该区域将显示在旧帖子上。
请告诉我。