WordPress错误:找不到选项页面

时间:2017-08-14 17:57:00

标签: wordpress wordpress-theming

我正在使用WordPress插件,但在尝试保存更改时,我一直收到ERROR: options page not found.错误。这是我的设置页面代码:https://pastebin.com/AsfcqHhe

我已经尝试了很多修复,但没有一个能够解决。

1 个答案:

答案 0 :(得分:1)

您订购字段和部分的方式是错误的,请参阅下面的代码测试并作为独立插件工作。测试它在你身边,如果它在你的主插件逻辑中工作实现。

<?php

/**
* Plugin Name: Example Settings
* Description: Example Settings
* Version: 1.0
**/

class Member_Only {
    /* Create blank array */
    public function __construct() {
        //$this = [];
        // Hook into the admin menu
        add_action( 'admin_menu', array( $this, 'settings_page' ) );
        add_action( 'admin_init', array( $this, 'setup_init' ) );
    }
    public function settings_page() {
        //Create the menu item and page
        $parent_slug = "member_only_fields";
        $page_title = "Member Only Content Settings Page";
        $menu_title = "Member Only Content";
        $capability = "manage_options";
        $slug = "member_only_fields";
        $callback = array( $this, 'settings_page_content' );
        add_submenu_page( "options-general.php", $page_title, $menu_title, $capability, $slug, $callback );
    }
    /* Create the page*/
    public function settings_page_content() { ?>
        <div class="wrap">
            <h2> Member Only Content </h2>
            <form method="post" action="options.php">
                <?php
                    settings_fields("member_only_fields");
                    do_settings_sections("member_only_fields");
                    submit_button();
                ?>
            </form>
    <?php }
    /* Setup section_callback */
    public function section_callback( $arguments ) {
        /* Set up input*/
        switch( $arguments['id'] ){
            case "categories" :
                echo "Categories that will trigger the member only message.";
                break;
            case "loginURL":
                echo "The login URL of your site. ";
            break;
        }
    }
    public function setup_init() {
        register_setting("member_only_fields", "categories");

        add_settings_section("categories", "Member Only Categories: ", array($this, 'section_callback'), "member_only_fields");
        add_settings_field( 'categories', 'Categories: ', array( $this, 'field_callback' ), 'member_only_fields', 'categories' );

        add_settings_section("loginURL", "Login URL: ", array($this, 'section_callback'), "member_only_fields");
    }
    /* Create input fields*/
    public function field_callback ( $arguments ) {
        echo "<input name=\"categories\" id=\"categories\" type=\"text\" value=\"" .get_option("categories"). "\"\>";
    }
}

new Member_Only();