警告:在PHP函数中给出了in_array()NULL

时间:2021-07-01 作者:Mathieu Préaud

我正在Wordpress中为特定页面模板构建一个metabox库。我在仪表板上有以下警告通知:

警告:in\\u array()要求参数2为array,在

警告针对代码行:if ( in_array( $post_type, $post_types ) ) {

public function add_meta_box( $post_type ) {

    $post_types = apply_filters( \'sortable_wordpress_gallery_post_types\', array( \'post\' ) );
    $post_types = apply_filters( \'sortable_wordpress_gallery_\' . $this->id .  \'_post_types\',  $post_types );

    if ( in_array( $post_type, $post_types ) ) {
        add_meta_box(
            $this->id,
            $this->title,
            array( $this, \'render_meta_box_content\' ),
            $post_type,
            $this->context,
            $this->priority
            );
    }
}
这是我在其中指定应在其中显示元框的页面模板的代码。

add_filter( \'sortable_wordpress_gallery_post-metabox_post_types\',  \'first_gallery_only_on_page\' );
function first_gallery_only_on_page( $post_types ) {

  global $post;
  if(!empty($post)) {
    $pageTemplate = get_post_meta($post->ID, \'_wp_page_template\', true);
    if($pageTemplate == \'page-coworking.php\' ) {

         return array( \'page\' );

    }
  }

}
我知道我的一个参数为null,但在使用它之前我找不到设置它的方法。非常感谢。

1 个回复
最合适的回答,由SO网友:Buttered_Toast 整理而成

首先你有这个密码

// no matter what the value here, you can forget about it (because in the next line of code you assing a new value to the same variable)
$post_types = apply_filters( \'sortable_wordpress_gallery_post_types\', array( \'post\' ) );

// only this really matters
$post_types = apply_filters( \'sortable_wordpress_gallery_\' . $this->id .  \'_post_types\',  $post_types );
秒中的值$post_types 就是你要检查的。

现在是回调函数

你检查一下$post 为空,请执行一些代码并返回一个数组。但如果$post 不为空。

在fillers中,返回回调函数的第一个参数,因此在本例中,就在回调函数的右括号之前,需要返回$post_types

回调函数的完整示例

function first_gallery_only_on_page ($post_types) {
    global $post;

    if (!empty($post)) {
        $pageTemplate = get_post_meta($post->ID, \'_wp_page_template\', true);

        if ($pageTemplate == \'page-coworking.php\' ) {
            return array( \'page\' );
        }
    }

    return $post_types; // add this line
}

相关推荐

用php实现WooCommerce维护模式

我想打开我网站的某些部分,剩下的页面只能作为网站管理员访问。我制作了一个维护插件,一切正常。然而,我无法过滤用户访问的页面。我想打开一个特定的产品类别,以及属于这个类别的所有产品。如果我没有以管理员身份登录,则无法访问产品类别及其所属的产品。我的代码如下-任何人都可以看到我做错了什么?谢谢<?php @return void function ng_maintenance_mode() { global $pagenow;