Когда новая запись Wordpress создается с использованием категории сообщений "A" (или "B" или "C"), мне нужно автоматически установить флажок Woocommerce-Memberships Отключить ограничения с помощью ловушки PHP , Это позволит всем зрителям неограниченный доступ для просмотра поста.
изображение флажка [1]
Я попытался добавить действие в хук "save_post", чтобы добавить значение "_wc_memberships_force_public", равное "yes", в таблицу {wp_prefix} _post_meta, однако при просмотре сообщения флажок будет отображаться как проверенный, поэтому это все еще ограничено. Когда я удаляю действие (комментируя его из моего файла functions.php) и вручную проверяю флажок Отключить ограничения перед сохранением сообщения, сообщение можно просмотреть без ограничений (как и ожидалось).
add_action( 'save_post', 'action_save_post_force_public', 99, 3);
function action_save_post_force_public($post_id, $post, $is_update){
$already_forced = get_post_meta( $post_id, '_wc_memberships_force_public', $single=true );
if ( 'yes' === $already_forced ){ return; }
$categories = get_the_category( $post_id );
if ( empty( $categories ) ){ return; }
$force_public_slugs = array('A', 'B', 'C');
foreach ( $categories as $term ){
if ( in_array( $term->slug, $force_public_slugs ) ){
update_post_meta( $post_id, '_wc_memberships_force_public', 'yes' );
break;
}
}
}
Я ожидаю, что у всех зрителей будет неограниченный доступ для просмотра содержимого публикации, независимо от того, установлен этот флажок автоматически или вручную. Вместо этого он работает только при ручной установке флажка.