Я пытаюсь создать функцию, которая сделает контент членства woocommerce общедоступным, если для определенного сообщения существует значение ACF.
Мне удалось создать отдельную функцию с помощью коллеги., который проверяет это значение и применяет HTML к шаблону content-single.php:
<?php $status = get_field('status'); ?>
<?php if( in_array('10', $status) ): ?>
<h2 class="HTML">HTML</h2>
<?php endif; ?>
Я также обнаружил функцию woocommerce-memberships, которая устанавливает публикацию как общедоступную в зависимости от того, установлен ли флажок.
public function output( \WP_Post $post ) {
$this->post = $post;
?>
<h4><?php esc_html_e( 'Content Restriction', 'woocommerce-memberships' ); ?></h4>
<?php woocommerce_wp_checkbox( array(
'id' => '_wc_memberships_force_public',
'class' => 'js-toggle-rules',
'label' => __( 'Disable restrictions', 'woocommerce-memberships' ),
'description' => __( 'Check this box if you want to force the content to be public regardless of any restriction rules that may apply now or in the future.', 'woocommerce-memberships' ),
) ); ?>
<?php if ( 'yes' === wc_memberships_get_content_meta( $post, '_wc_memberships_force_public', true ) ) : ?>hide<?php endif; ?>">
Последняя строка содержит интересующее меня действие:
wc_memberships_get_content_meta( $post, '_wc_memberships_force_public', true )
Я не уверен, как правильно отформатировать это, но цель состоит в том, чтобы что-то подобное произошлопри обновлении сообщения:
/* If 10 is in $status array */
<?php if( in_array('10', $status) ): ?>
/* Then set the post _wc_memberships_force_public value to true */
wc_memberships_get_content_meta( $post, '_wc_memberships_force_public', true )
<?php endif; ?>