Предупреждение: array_filter () ожидает, что параметр 1 будет массивом - PullRequest
0 голосов
/ 05 марта 2020

Привет, я столкнулся с проблемой на моем сайте. Следующий фрагмент кода PHP появляется на моем внешнем веб-сайте, который отображается за моими слоями. Я не кодер, но могу внести изменения в php при необходимости. Кто-нибудь может помочь?

Предупреждающее сообщение:

Предупреждение: array_filter () ожидает, что параметром 1 будет массив, логическое значение / home / gordonfrasier / public_html / wp-content / plugins / div-оверлеи / div-оверлеи. php в строке 2617

код:}

            if ( $display_in_posts == 'all' ) {

                $display_in_current = true;
**Line 2617 ------------->** $except_in_posts = array_filter( get_post_meta( $overlay_id, 'do_at_pagesexception_selected' ) );

                if ( isset ( $except_in_posts[0] ) ) {

                    foreach( $except_in_posts[0] as $in_post => $the_id ) {

                        if ( $the_id == $current_post_id ) {

                            $display_in_current = false;

                            break;
                        }
                    }
                }
            }

1 Ответ

1 голос
/ 05 марта 2020

Функция WordPress get_post_meta() потенциально может возвращать одно значение.

Чтобы обойти это, вы можете сделать это вместо вашей неисправной строки:

$postMeta = get_post_meta( $overlay_id, 'do_at_pagesexception_selected');
$except_in_posts = is_array($postMeta) ? array_filter($postMeta) : [$postMeta];

. что если get_post_meta возвращает отдельный результат вместо массива, он создаст массив с ним, в противном случае он будет делать array_filter(), который вы хотели

...