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

正在查看 7 个帖子:1-6 (共 6 个帖子)
  • 作者
    帖子
  • mars160
    • 文章数量: 27
    @mars160
    楼主

    <?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');
    
    
    来自深圳, 广东, 中国
    mars160
    • 文章数量: 27
    @mars160
    楼主

    上传图片

    来自深圳, 广东, 中国
    mars160
    • 文章数量: 27
    @mars160
    楼主

    来自深圳, 广东, 中国
    mars160
    • 文章数量: 27
    @mars160
    楼主

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

    来自深圳, 广东, 中国
    孙锡源
    • 文章数量: 704
    @ibadboy

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

    来自潍坊市, 山东省, 中国
    mars160
    • 文章数量: 27
    @mars160
    楼主

    不行!后台直接挂了

    来自深圳, 广东, 中国
    孙锡源
    • 文章数量: 704
    @ibadboy

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

    来自潍坊市, 山东省, 中国
正在查看 7 个帖子:1-6 (共 6 个帖子)
  • 哎呀,回复话题必需登录。

话题信息