WP选项插件设置不保存选中的复选框

时间:2018-06-22 作者:Yuki Nekomimi

我正在尝试制作一个插件,到目前为止一切都正常,问题是当需要“保存更改”时,文本已保存,但选中的2复选框未保存,因此两者都未选中。

这是屏幕截图,输入类型中输入的文本已保存,因此可以正常工作,但选中的2复选框未选中,这是为什么?

enter image description here

这是我的密码

add_action( \'admin_init\', function() {
    register_setting( \'my-awesome-plugin-settings\', \'map_option_1\' );
    register_setting( \'my-awesome-plugin-settings\', \'map_option_2\' );
    register_setting( \'my-awesome-plugin-settings\', \'map_option_3\' );
    register_setting( \'my-awesome-plugin-settings\', \'map_option_4\' );
    register_setting( \'my-awesome-plugin-settings\', \'map_option_5\' );
    register_setting( \'my-awesome-plugin-settings\', \'map_option_6\' );

});

    function sort_post_plugin() {
      ?>
        <div class="wrap">
          <form action="options.php" method="post">
            <?php
              settings_fields( \'my-awesome-plugin-settings\' );
              do_settings_sections( \'my-awesome-plugin-settings\' );
            ?>
           <div class="title-set"><h1>SORT POST SETTINGS</h1></div>
            <table class="mytable">
                <tr>
                    <th>Posty Type</th>
                    <td><input type="text" placeholder="Post Type" name="map_option_1" value="<?php echo esc_attr( get_option(\'map_option_1\') ); ?>" size="50" /></td>

                </tr>
                <tr>
                    <th>Meta Key</th>
                     <td><input type="text" placeholder="Meta Key" name="map_option_2" value="<?php echo esc_attr( get_option(\'map_option_2\') ); ?>" size="50" /></td>
                </tr>
                <tr>
                    <th>Sorts</th>
                     <td><input type="checkbox" placeholder="Meta Key" name="map_option_3" />Name<br>
                      <input type="checkbox" id="cb_name" name="map_option_4">Price<br><input type="text" name="metakey" id="metakey" placeholder="Meta Key"></td>

                </tr>

                <tr>
                    <td><?php submit_button(); ?></td>
                </tr>

            </table>
          </form>
        </div>
      <?php
    }
     ?>
我希望你能帮助我,这是我第一次创建wp插件。非常感谢。

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

您的代码只输出空复选框。必须检查每个框的值,然后设置checked="checked" 如果这是真的。

<td><input type="checkbox" placeholder="Meta Key" name="map_option_3"
    <?php // check whether map_option_3 was saved
    if(isset(get_option(\'map_option_3\'))) { ?>checked="checked"<?php } ?>
 />Name<br>
<input type="checkbox" id="cb_name" name="map_option_4"
    <?php // check whether map_option_4 was saved
    if(isset(get_option(\'map_option_4\'))) { ?>checked="checked"<?php } ?>
/>Price<br><input type="text" name="metakey" id="metakey" placeholder="Meta Key"></td>
您还应该将名称和价格制作成实际的表单标签,而不仅仅是方框旁边的纯文本。:)

结束

相关推荐

Options表崩溃并修复后无法访问wp-admin

我的选项表崩溃了,我成功地修复了它。但现在当我登录时,它会重定向到没有工具栏的主页,如果我键入/wp admin,我会得到“抱歉,您不允许访问此页面。”我尝试了通常的禁用插件和主题的方法。正在删除。htaccess文件。似乎什么都没用。我确实有一个5天前的DB备份,可以恢复访问,但在这段时间内做了很多更改,所以我希望以不同的方式解决这个问题。