PHP通知:未识别的索引

时间:2018-01-04 作者:Cedon

创建自定义帖子类型的新帖子时debug.log 充满了PHP Notice: Unidentified index: 每个元字段的警告。

这个问题以前已经问过并回答过了here 我在那里实现了解决方案,但每次我创建这种类型的新帖子时,我仍然会看到debug.log.

save方法的代码如下:

/** Listener for saving post */
public function save() {
    $post_type_name = $this->post_type_name;

    add_action( \'save_post\',
       function () use ( $post_type_name ) {

            // Do not autosave meta box data
            if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) {
                return;
            }

            // Abort if the nonce field is not set
            if ( ! isset( $_POST[\'my-nonce\'] ) ||
                 ! wp_verify_nonce( $_POST[\'my-nonce\'], MY__PLUGIN_FILE ) ) {
                return;
            }

            global $post;

            if ( isset( $_POST ) && isset( $post->ID ) && get_post_type( $post->ID ) == $post_type_name ) {
                global $custom_fields;

                // Loop through all meta boxes
                foreach ( $custom_fields as $title => $fields ) {

                    // Loop through all fields in meta box
                    foreach ( $fields as $label => $type ) {

                        $field_name = self::uglify( $title ) . \'_\' . self::uglify( $label );

                        // Prevent PHP Warnings for undefined index
                        if ( isset( $_POST[\'fitcase\'][ $field_name ] ) ) {
                            $metadata = $_POST[\'fitcase\'][ $field_name ];
                        } else {
                            $metadata = null;
                        }

                        update_post_meta( $post->ID, $field_name, $metadata );
                     }
                 }
            }
        }   
    );
}

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

我深入研究了这些警告,发现实际上是我的类中的另一个方法导致了错误。我有一个在元框中创建字段并设置value 属性的内容$meta[ $field_id_name ][0]. 这就是导致通知消息的原因。

因此,在构建表单元素之前,我添加了以下内容:

// Check for meta data for value attribute and set to null if not found
if ( ! isset( $meta[ $field_id_name ] ) ) {
    $meta[ $field_id_name ][0] = null;
}
我对一篇新帖子和一篇已有元数据的帖子进行了多次测试,结果都正常。

结束