PHP Предупреждение, Уведомление и Анализировать Ошибка при добавлении к массиву в цикле Wordpress

голоса
0

Я мог бы действительно сделать с некоторой помощью рабочей, где я пошел неправильно. Я пытаюсь добавить переменные в массив, а затем json_encode этого массива для сохранения в БД для вызова позже, но его бросали все виды ошибок, но все еще работает ?!

Ошибки:

PHP Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '$ events_array' (T_VARIABLE), ожидая ')'

PHP Примечание: Undefined переменной: event_cat_id в

PHP Примечание: Undefined индекс: в

(Все ошибки возникают на тот же номер строки из функции 2)

Функция 1 - Создает массив событий и возвратов

function __create_events_array() {

    // Start clean $events array,
    $events_array = array();

    // Event category args
    $event_categories = get_categories( array(
            'orderby' => 'name',
            'taxonomy' => 'tribe_events_cat',
            'posts_per_page' => -1,
    ) );

    // Event category loop
    foreach ( $event_categories as $category ) {

        //  Event Calendar Date Args
        $range_start = date('Y-m-d',strtotime('today midnight'));
        $get_event_args = array(
            'post_status'       => 'publish',
            'post_type'         => 'Tribe_Events',
            'posts_per_page'    =>  1,
            'meta_key'          => '_EventStartDate',
            'orderby'           => '_EventStartDate',
            'order'             => 'ASC',
            'meta_query'        =>  array(
                                array(
                                'key' => '_EventStartDate',
                                'value' => $range_start,
                                'compare' => '>=',
                                )
                        ),

            'eventDisplay'=>'custom',
            //query events by category
            'tax_query' => array(
                            array(
                            'taxonomy' => 'tribe_events_cat',
                            'field' => 'slug',
                            'terms' => $category->slug,
                            'operator' => 'IN'
                            ),
            ));

        // Event calendar Date loop
        $get_events = null;
        $get_events = new WP_Query($get_event_args);

        if($get_events->have_posts()) : 
            while($get_events->have_posts()) : 
                $get_events->the_post();

                // Events to add to $events_array
                $events_to_add =array(
                        'start_date' => tribe_get_start_date(),
                        'end_date' => tribe_get_end_date(),
                );

                // add to $events_array
                $events_array[$category->term_id] = $events_to_add;

            endwhile;
        endif;

        wp_reset_query();
        wp_reset_postdata();

    }
    return $events_array;
}

Функция 2 - Вызывает возвращаемый массив из функции 1, выбирает вспомогательный массив по категории идентификатора ($ event_cat_id])

function __sync_setup(){

    $events_array = __create_events_array();

    // Products to sync args
    $args = array(
        'post_type'     => 'product',
        'post_status' => array('publish', 'pending', 'draft', 'future', 'private'),
        //'nopaging' => false,
        'orderby' => 'ID',
        'order'   => 'DESC',
        //'parent' => array( 13, 14, 15 ),
        'posts_per_page' => -1,
        //'offset' => 3,

        'meta_query' => array(
                        'relation' => 'and',
                        array(
                            'relation'  => 'or',
                                array(
                                'key' => '_sku',
                                'value' => 'sku1',
                                'compare' => 'NOT LIKE',
                                ),
                            ),
                        array(
                            'relation' => 'or',
                                array(
                                'key' => '_sku',
                                'value' => 'sku2',
                                'compare' => 'NOT LIKE',
                                ),
                            ),
                        array(
                            'relation' => 'or',
                                array(
                                'key' => '_sku',
                                'value' => 'sku3',
                                'compare' => 'NOT LIKE',
                                ),
                            ),
                        array(
                            'relation' => 'or',
                                array(
                                'key' => '_sku',
                                'value' => 'sku4',
                                'compare' => 'NOT LIKE',
                                ),
                            ),
                        array(
                            'relation' => 'or',
                                array(
                                'key' => '_sku',
                                'value' => 'sku5',
                                'compare' => 'NOT LIKE',
                                ),
                            ),
                        )
    );

    $the_query = new WP_Query( $args );

    // The Loop
    if ( $the_query->have_posts() ) {
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            global $product;

            // Get ID of current product
            $product_id = $product->get_id();
            // Get event category slug from product (custom field)
            $product_cat_slug =  get_post_meta( $product_id, 'my_dates', true);
            // Get event cat term
            $event_cat_term = get_term_by('slug', $product_cat_slug, 'tribe_events_cat');
            // Get event cat id
            if ($event_cat_term) {
                $event_cat_id = $event_cat_term->term_id;
            }

            // Get Events to sync
            $events_to_sync = json_encode($events_array[$event_cat_id]); // Line that causes the errors and warnings

            //Get Current Product Events
            $existing_product_events = get_post_meta( $product_id, 'product_dates', true );


            // Check if custom field exists before loop
            if( !empty($product_cat_slug) )  {

                if ( str_ireplace( '\\', '', $events_to_sync) === $existing_product_events ) {

                    //echo 'Matched - ' . $product->get_sku() . '<br>';
                    // Update custom field with current date

                } else {
                    update_post_meta( $product_id, 'product_dates', $events_to_sync );
                    //echo 'Updated - ' .  $product->get_sku() . '<br>';
                }
            } else {
                echo '<strong style=color:red;>No product date for - </strong>' . $product->get_sku() . '<br>';
            }

        }

    }

    /* Restore original Post Data */
    wp_reset_postdata();


}

скрипт делает работу по назначению, но знает, им все еще не делает это правильно.

Спасибо за любой вклад.

Задан 13/02/2020 в 23:53
источник пользователем
На других языках...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more