管理页面更改$_POST数据

时间:2019-05-14 作者:Rodrigo Butzke

我试图将json数组保存到数据库中,并创建了以下类

defined(\'ABSPATH\') || exit;

class Theme_FAQ {

    public function __construct() {
        add_action(\'admin_menu\', array($this, \'theme_faq_admin_menu\'));
    }

    public function theme_faq_admin_menu() {
        add_menu_page(\'FAQ\', "FAQ", \'manage_options\', \'theme-faq\', array($this, \'theme_faq_page\'), \'dashicons-excerpt-view\', 58);
    }

    function theme_faq_page() {
        wp_enqueue_script(\'jquery\');
        wp_enqueue_script(\'jquery-ui-sortable\');
        wp_enqueue_script(\'jquery-effects-slide\');
        $faq = get_option(\'theme_faq\');
        if (isset($_POST[\'theme-faq-save\'])) {
            if ($faq !== $_POST[\'theme_faq\']) {
                $faq = $_POST[\'theme_faq\'];
                update_option(\'theme_faq\', $faq);
            }           
        }           
        include(\'html-theme-faq.php\');
    }
}
和html主题常见问题解答。php我有一个表单,它有一个名为“theme\\u faq”的输入,在测试中我使用这个值

[{"title":"Title 1","content":"Content 1"},{"title":"Title 2","content":"Content 2"}]
但是,如果我添加一个var\\u转储($\\u POST),我会得到以下输出

array(2) { ["theme_faq"]=> string(101) "[{\\"title\\":\\"Title 1\\",\\"content\\":\\"Content 1\\"},{\\"title\\":\\"Title 2\\",\\"content\\":\\"Content 2\\"}]" ["theme-faq-save"]=> string(19) "Save" }
theme\\u faq值将“改为\\”,如何防止出现这种情况?还是颠倒过来?

我已经找到了一些解决方法,通过使用[]更改输入名称来生成数组,但在使用“或”时仍然会更改。。。

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

我从wp core中找到了wp\\u unslash函数。

$value = wp_unslash($_POST[\'theme_faq\']);
if ($faq !== value ) {
    $faq = value ;
    update_option(\'theme_faq\', $faq);
}   
现在它工作得很好。

相关推荐

允许直接访问WordPress中的文件/文件夹以取代wp-admin

以下是场景:我想为我的客户设计一个全新的wordpress管理员(使用wordpressautoload 作为与WordPress交互的核心)。我尝试过稍微修改css,甚至使用javascript来操作DOM,但似乎效率很低,因为我可以重新编写一个新页面,而不是操作现有页面。考虑到这一点,我创建了一个新文件夹,custom_dashboard, 并尝试在客户访问时重定向他们/wp-admin. 然而,它总是显示404 NOT FOUND 当我打开时mydomain.com/custom_dashboard