Когда новое сообщение Wordpress создается с использованием категории сообщений «A» (или «B» или «C»), мне нужно автоматически установить флажок Woocommerce-Memberships Отключить ограничения с помощью PHP-хука. Это позволит всем зрителям неограниченный доступ к просмотру публикации.
Я попытался добавить действие в хук «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;
}
}
}
Я ожидаю, что все зрители будут иметь неограниченный доступ к просмотру содержимого публикации независимо от того, установлен ли этот флажок автоматически или вручную. Вместо этого он работает только при установке флажка вручную.