Как форсировать публичный контент через членство в woocommerce на основе значения массива ACF - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь создать функцию, которая сделает контент членства 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; ?>
...