Добавьте метабокс, если доступна хотя бы одна запись

#php #wordpress

Вопрос:

Поэтому я создаю виджет панели управления WordPress, который будет отображать все сообщения и страницы, на которых активен блок Гутенберга.

Приведенный ниже код выполняет свою работу и извлекает массив на основе get_posts() .

Вот что я пытаюсь сделать:

  1. Есть ли способ, которым я могу вызвать функцию add_action и pardot_dashboard_widget() функцию, ТОЛЬКО если в ней есть хотя бы одна или несколько записей get_posts() ? Если это пустой массив, даже не утруждайте себя созданием метабокса.

Вот код:

 /**
 * Pardot Widget for Dashboard
 */
function pardot_dashboard_widget()
{
    add_meta_box(
        'pardot_dashboard_meta_box',
        esc_html__( 'Pardot Form Locations', 'wporg' ),
        'pardot_dashboard_stats',
        'dashboard',
        'side', 'high'
    );
}
add_action('wp_dashboard_setup', 'pardot_dashboard_widget');

function pardot_dashboard_stats()
{
    $args = [
        's'         => '<!-- wp:acf/pardot-form ',
        'sentence'  => 1,
        'post_type' => [
            'post',
            'page'
        ],
    ];
    $pardot_form_query = get_posts($args);
    if (!$pardot_form_query) {
       echo 'There are no active pardot forms available.';
    }
}
 

Ответ №1:

Вы можете попробовать присвоить мета переменной и использовать ее в операторе if.

Например:

    <?php
      $price_list = get_post_meta( $post->ID, 'price_list_category1', true );
 ?>
 

И затем…

 <?php
      if ($price_list == '') {
            echo 'amp;nbsp;';
        } else {
            echo '<h2>' . add your meta box conditions here . '</h2>';
          }
    ?>