我正在尝试创建一个函数,该函数要么用meta\\u键“bakground video”删除所有postmeta,要么编辑meta\\u值以从值中清空它。meta\\u键“background video”可能会有多个Posteta,我希望该函数能够在所有这些Posteta上运行。
我将在多站点上使用此功能,当用户将角色更改为“基本”时,这将触发并删除或编辑所有带有键的postmetas。我该如何做到这一点?搜索时可以找到的所有函数都要求我知道post\\u id,但我不知道。
这是我经过一番搜索后得出的结论,但我无法让它起作用!
$args = array( \'fields\' => \'ids\',
\'posts_per_page\' => -1,
\'post_type\' => \'attachment\',
\'meta_key\' => \'background-video\'
);
$all_ids = new WP_Query( $args );
foreach( $all_ids as $ai ) {
update_post_meta( $ai->post->ID, \'background-video\', \'\' );
}
wp_reset_postdata();
这被插入到一个函数中,当用户将角色更改为名为“basic”的角色时,该函数将触发。
编辑:与用户角色更改功能一起使用:
add_action( \'set_user_role\', function( $user_id, $role, $old_roles )
{
if ( \'basic\' == $role ) {
$args = array( \'fields\' => \'ids\',
\'posts_per_page\' => -1,
\'post_type\' => \'attachment\',
\'meta_key\' => \'background-video\'
);
$all_ids = new WP_Query( $args );
if ( $all_ids->have_posts() ) {
while ( $all_ids->have_posts() ) {
$all_ids->the_post();
update_post_meta( $p->ID, \'background-video\', \'\' );
}
}
wp_reset_postdata();
}
}, 10, 3 );
SO网友:jockebq
最终解决了这个问题,我想问题是我使用了错误的post\\u类型。现在它工作得非常好!
非常感谢您的帮助!
add_action( \'set_user_role\', function( $user_id, $role, $old_roles )
{
if ( \'basic\' == $role ) {
$args = array( \'fields\' => \'ids\',
\'posts_per_page\' => -1,
\'post_type\' => \'slide\',
\'meta_key\' => \'background-video\'
);
$all_ids = new WP_Query( $args );
if ( $all_ids->have_posts() ) {
while ( $all_ids->have_posts() ) {
$all_ids->the_post();
update_post_meta( get_the_ID(), \'background-video\', \'\' );
}
}
wp_reset_postdata();
}
}, 10, 3 );