wp字段数组报警,Notice: Undefined index如何处理

论坛首页 论坛 寻求帮助 wp字段数组报警,Notice: Undefined index如何处理

正在查看 4 条回复
  • 作者
    帖子
    • #22311
      一点优化
      参与者
        @921988379
        楼主

        <?php
        // 文章SEO
        $seo_post_meta_boxes =
        array(
        “custom_title” => array(
        “name” => “custom_title”,
        “std” => “”,
        “title” => “SEO自定义文章标题”,
        “type”=>”text”),

        “description” => array(
        “name” => “description”,
        “std” => “”,
        “title” => “SEO文章描述,留空则自动截取首段一定字数作为文章描述”,
        “type”=>”textarea”),

        “keywords” => array(
        “name” => “keywords”,
        “std” => “”,
        “title” => “SEO文章关键词,多个关键词用半角逗号隔开”,
        “type”=>”text”),
        );

        // 面板内容
        function seo_post_meta_boxes() {
        global $post, $seo_post_meta_boxes;
        //获取保存
        foreach ($seo_post_meta_boxes as $meta_box) {
        $meta_box_value = get_post_meta($post->ID, $meta_box[‘name’] . ”, true);
        if ($meta_box_value != “”)
        //将默认值替换为已保存的值
        $meta_box[‘std’] = $meta_box_value;
        echo ‘<input type=”hidden” name=”‘ . $meta_box[‘name’] . ‘_noncename” id=”‘ . $meta_box[‘name’] . ‘_noncename” value=”‘ . wp_create_nonce(plugin_basename(__FILE__)) . ‘” />’;
        //选择类型输出不同的html代码
        switch ($meta_box[‘type’]) {
        case ‘title’:
        echo ‘<h4>’ . $meta_box[‘title’] . ‘</h4>’;
        break;
        case ‘text’:
        echo ‘<h4>’ . $meta_box[‘title’] . ‘</h4>’;
        echo ‘<span class=”form-field”><input type=”text” size=”40″ name=”‘ . $meta_box[‘name’] . ‘” value=”‘ . $meta_box[‘std’] . ‘” /></span><br />’;
        break;
        case ‘textarea’:
        echo ‘<h4>’ . $meta_box[‘title’] . ‘</h4>’;
        echo ‘<textarea id=”seo-excerpt” cols=”40″ rows=”2″ name=”‘ . $meta_box[‘name’] . ‘”>’ . $meta_box[‘std’] . ‘</textarea><br />’;
        break;
        }
        }
        }

        // 创建面板
        function seo_post_meta_box() {
        global $theme_name;
        if (function_exists(‘add_meta_box’)) {
        add_meta_box(‘seo_post_meta_box’, ‘SEO设置’, ‘seo_post_meta_boxes’, ‘post’, ‘normal’, ‘high’);
        }
        }
        // 保存数据
        function save_seo_post_postdata($post_id) {
        global $post, $seo_post_meta_boxes;
        foreach ($seo_post_meta_boxes as $meta_box) {
        if (!wp_verify_nonce($_POST[$meta_box[‘name’] . ‘_noncename’], plugin_basename(__FILE__))) {  ///报错位置
        return $post_id;
        }
        if (‘page’ == $_POST[‘post_type’]) {
        if (!current_user_can(‘edit_page’, $post_id)) return $post_id;
        } else {
        if (!current_user_can(‘edit_post’, $post_id)) return $post_id;
        }
        $data = $_POST[$meta_box[‘name’] . ”];
        if (get_post_meta($post_id, $meta_box[‘name’] . ”) == “”) add_post_meta($post_id, $meta_box[‘name’] . ”, $data, true);
        elseif ($data != get_post_meta($post_id, $meta_box[‘name’] . ”, true)) update_post_meta($post_id, $meta_box[‘name’] . ”, $data);
        elseif ($data == “”) delete_post_meta($post_id, $meta_box[‘name’] . ”, get_post_meta($post_id, $meta_box[‘name’] . ”, true));
        }
        }
        // 触发
        add_action(‘admin_menu’, ‘seo_post_meta_box’);
        add_action(‘save_post’, ‘save_seo_post_postdata’);

        // 页面相关自定义栏目
        $new_meta_page_boxes =
        array(
        "custom_title" => array(
        "name" => "custom_title",
        "std" => "",
        "title" => "SEO自定义页面标题",
        "type"=>"text"),
        
        "description" => array(
        "name" => "description",
        "std" => "",
        "title" => "文章描述,留空则自动截取首段一定字数作为文章描述",
        "type"=>"textarea"),
        
        "keywords" => array(
        "name" => "keywords",
        "std" => "",
        "title" => "文章关键词,多个关键词用半角逗号隔开",
        "type"=>"text"),
        );
        
        // 面板内容
        function new_meta_page_boxes() {
        global $post, $new_meta_page_boxes;
        //获取保存
        foreach ($new_meta_page_boxes as $meta_box) {
        $meta_box_value = get_post_meta($post->ID, $meta_box['name'] . '', true);
        if ($meta_box_value != "")
        //将默认值替换为已保存的值
        $meta_box['std'] = $meta_box_value;
        echo '<input type="hidden" name="' . $meta_box['name'] . '_noncename" id="' . $meta_box['name'] . '_noncename" value="' . wp_create_nonce(plugin_basename(__FILE__)) . '" />';
        //选择类型输出不同的html代码
        switch ($meta_box['type']) {
        case 'title':
        echo '<h4>' . $meta_box['title'] . '</h4>';
        break;
        case 'text':
        echo '<h4>' . $meta_box['title'] . '</h4>';
        echo '<span class="form-field"><input type="text" size="40" name="' . $meta_box['name'] . '" value="' . $meta_box['std'] . '" /></span><br />';
        break;
        case 'textarea':
        echo '<h4>' . $meta_box['title'] . '</h4>';
        echo '<textarea id="seo-excerpt" cols="40" rows="2" name="' . $meta_box['name'] . '">' . $meta_box['std'] . '</textarea><br />';
        break;
        }
        }
        }
        
        function create_meta_page_box() {
        global $theme_name;
        if (function_exists('add_meta_box')) {
        add_meta_box('new-meta-boxes', '页面SEO设置', 'new_meta_page_boxes', 'page', 'normal', 'high');
        }
        }
        function save_page_postdata($post_id) {
        global $post, $new_meta_page_boxes;
        foreach ($new_meta_page_boxes as $meta_box) {
        if (!wp_verify_nonce($_POST[$meta_box['name'] . '_noncename'], plugin_basename(__FILE__))) { //这里报错
        return $post_id;
        }
        if ('page' == $_POST['post_type']) {
        if (!current_user_can('edit_page', $post_id)) return $post_id;
        } else {
        if (!current_user_can('edit_post', $post_id)) return $post_id;
        }
        $data = $_POST[$meta_box['name'] . ''];
        if (get_post_meta($post_id, $meta_box['name'] . '') == "") add_post_meta($post_id, $meta_box['name'] . '', $data, true);
        elseif ($data != get_post_meta($post_id, $meta_box['name'] . '', true)) update_post_meta($post_id, $meta_box['name'] . '', $data);
        elseif ($data == "") delete_post_meta($post_id, $meta_box['name'] . '', get_post_meta($post_id, $meta_box['name'] . '', true));
        }
        }
        add_action('admin_menu', 'create_meta_page_box');
        add_action('save_post', 'save_page_postdata');
        
        
      • #22312
        一点优化
        参与者
          @921988379
          楼主

          上传图片

        • #22314
          一点优化
          参与者
            @921988379
            楼主

          • #22315
            一点优化
            参与者
              @921988379
              楼主

              请问这个怎么处理啊
              Notice: Undefined index: custom_title_noncename in /www/wwwroot/seoyh.net/wp-content/themes/bit/inc/gn/seo/admin-meta.php on line 62

            • #22316
              孙锡源
              管理员
                @ibadboy
                坏蛋的博客
                ibadboy.net

                数组判空,或者用三目运算在未定义时返回空字符串,例如:$_POST[$meta_box[‘name’] . ‘_noncename’] ?? ”

                • #22317
                  一点优化
                  参与者
                    @921988379
                    楼主

                    不行!后台直接挂了

                    • #22318
                      孙锡源
                      管理员
                        @ibadboy
                        坏蛋的博客
                        ibadboy.net

                        贴代码看看你咋写的。另外建议百度搜一下双问号的 php 语法,这是非常常用的语法糖,不过只支持 php 7.4 以上。如果你的代码运行在旧版 PHP 上的话,还是按常规的 if 判断或者全写形式的三目运算来吧

                正在查看 4 条回复
                • 哎呀,回复话题必需登录。