Hinzufügen von Menüseitenproblemen (Berechtigungen und Position)

OK, ich habe ein Problem mit dem Sidebar Generator Plugin .

Dieses Plugin erstellt die Unterseite “Sidebars” in WP-Admin. Der Punkt ist, es wird als Kind der “Aussehen” -Seite erstellt.

Und ich will es hier nicht, ich möchte, dass “Sidebars” eine Unterseite meiner eigenen Seite namens “my-page” ist.

Ich habe diese Zeile im Code des Plugins gefunden:

function admin_menu(){ add_submenu_page('themes.php', 'Sidebars', 'Sidebars', 'manage_options', __FILE__, array('sidebar_generator','admin_page')); } 

Und änderte ‘themes.php’ zu ‘my-page’.

Jetzt wird “Seitenleisten” unter Meine Seite angezeigt, aber wenn ich versuche, darauf zuzugreifen, wird Folgendes angezeigt:

Sie sind nicht berechtigt, auf diese Seite zuzugreifen.

Warum passiert das und wie kann das behoben werden?

Und zusätzliche Frage – die Seitenleisten-Seite wird immer ganz oben in meiner Liste der Meine-Seite-Unterseiten angezeigt, wie kann ich das ändern (eigentlich möchte ich, dass es die letzte Unterseite von Meine Seite ist).

Original, vollständiger Code:

 <?php /* Plugin Name: Sidebar Generator Plugin URI: http://www.getson.info Description: This plugin generates as many sidebars as you need. Then allows you to place them on any page you wish. Version 1.1 now supports themes with multiple sidebars. Version: 1.1.0 Author: Kyle Getson Author URI: http://www.kylegetson.com Copyright (C) 2009 Kyle Robert Getson */ /* Copyright (C) 2009 Kyle Robert Getson, kylegetson.com and getson.info This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ class sidebar_generator { function sidebar_generator(){ add_action('init',array('sidebar_generator','init')); add_action('admin_menu',array('sidebar_generator','admin_menu')); add_action('admin_print_scripts', array('sidebar_generator','admin_print_scripts')); add_action('wp_ajax_add_sidebar', array('sidebar_generator','add_sidebar') ); add_action('wp_ajax_remove_sidebar', array('sidebar_generator','remove_sidebar') ); //edit posts/pages add_action('edit_form_advanced', array('sidebar_generator', 'edit_form')); add_action('edit_page_form', array('sidebar_generator', 'edit_form')); //save posts/pages add_action('edit_post', array('sidebar_generator', 'save_form')); add_action('publish_post', array('sidebar_generator', 'save_form')); add_action('save_post', array('sidebar_generator', 'save_form')); add_action('edit_page_form', array('sidebar_generator', 'save_form')); } function init(){ //go through each sidebar and register it $sidebars = sidebar_generator::get_sidebars(); if(is_array($sidebars)){ foreach($sidebars as $sidebar){ $sidebar_class = sidebar_generator::name_to_class($sidebar); register_sidebar(array( 'name'=>$sidebar, 'before_widget' => '
  • ', 'after_widget' => '
  • ', 'before_title' => '

    ', 'after_title' => '

    ', )); } } } function admin_print_scripts(){ wp_print_scripts( array( 'sack' )); ?> function add_sidebar( sidebar_name ) { var mysack = new sack("/wp-admin/admin-ajax.php" ); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "add_sidebar" ); mysack.setVar( "sidebar_name", sidebar_name ); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() { alert('Ajax error. Cannot add sidebar' )}; mysack.runAJAX(); return true; } function remove_sidebar( sidebar_name,num ) { var mysack = new sack("/wp-admin/admin-ajax.php" ); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "remove_sidebar" ); mysack.setVar( "sidebar_name", sidebar_name ); mysack.setVar( "row_number", num ); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() { alert('Ajax error. Cannot add sidebar' )}; mysack.runAJAX(); //alert('hi!:::'+sidebar_name); return true; } <?php } function add_sidebar(){ $sidebars = sidebar_generator::get_sidebars(); $name = str_replace(array("\n","\r","\t"),'',$_POST['sidebar_name']); $id = sidebar_generator::name_to_class($name); if(isset($sidebars[$id])){ die("alert('Sidebar already exists, please use a different name.')"); } $sidebars[$id] = $name; sidebar_generator::update_sidebars($sidebars); $js = " var tbl = document.getElementById('sbg_table'); var lastRow = tbl.rows.length; // if there's no header row in the table, then iteration = lastRow + 1 var iteration = lastRow; var row = tbl.insertRow(lastRow); // left cell var cellLeft = row.insertCell(0); var textNode = document.createTextNode('$name'); cellLeft.appendChild(textNode); //middle cell var cellLeft = row.insertCell(1); var textNode = document.createTextNode('$id'); cellLeft.appendChild(textNode); //var cellLeft = row.insertCell(2); //var textNode = document.createTextNode('[Remove]'); //cellLeft.appendChild(textNode) var cellLeft = row.insertCell(2); removeLink = document.createElement('a'); linkText = document.createTextNode('remove'); removeLink.setAttribute('onclick', 'remove_sidebar_link(\'$name\')'); removeLink.setAttribute('href', 'javacript:void(0)'); removeLink.appendChild(linkText); cellLeft.appendChild(removeLink); "; die( "$js"); } function remove_sidebar(){ $sidebars = sidebar_generator::get_sidebars(); $name = str_replace(array("\n","\r","\t"),'',$_POST['sidebar_name']); $id = sidebar_generator::name_to_class($name); if(!isset($sidebars[$id])){ die("alert('Sidebar does not exist.')"); } $row_number = $_POST['row_number']; unset($sidebars[$id]); sidebar_generator::update_sidebars($sidebars); $js = " var tbl = document.getElementById('sbg_table'); tbl.deleteRow($row_number) "; die($js); } function admin_menu(){ add_submenu_page('themes.php', 'Sidebars', 'Sidebars', 'manage_options', __FILE__, array('sidebar_generator','admin_page')); } function admin_page(){ ?> function remove_sidebar_link(name,num){ answer = confirm("Are you sure you want to remove " + name + "?\nThis will remove any widgets you have assigned to this sidebar."); if(answer){ //alert('AJAX REMOVE'); remove_sidebar(name,num); }else{ return false; } } function add_sidebar_link(){ var sidebar_name = prompt("Sidebar Name:",""); //alert(sidebar_name); add_sidebar(sidebar_name); }

    Sidebar Generator

    The sidebar name is for your use only. It will not be visible to any of your visitors. A CSS class is assigned to each of your sidebar, use this styling to customize the sidebars.



    <tr class="">
    Name CSS class Remove
    <a href="javascript:void(0);" onclick="return remove_sidebar_link('',);" title="Remove this sidebar">remove
    No Sidebars defined


    ID; } $selected_sidebar = get_post_meta($post_id, 'sbg_selected_sidebar', true); if(!is_array($selected_sidebar)){ $tmp = $selected_sidebar; $selected_sidebar = array(); $selected_sidebar[0] = $tmp; } $selected_sidebar_replacement = get_post_meta($post_id, 'sbg_selected_sidebar_replacement', true); if(!is_array($selected_sidebar_replacement)){ $tmp = $selected_sidebar_replacement; $selected_sidebar_replacement = array(); $selected_sidebar_replacement[0] = $tmp; } ?>

    Sidebars

    Select the sidebar you wish to display on this page, and which sidebar it will replace. (leave unselected to use the default sidebar everywhere)

      <?php global $wp_registered_sidebars; //var_dump($wp_registered_sidebars); for($i=0;$i
    • Replace <select name="sidebar_generator[]"> <option value="0">WP Default Sidebar <?php $sidebars = $wp_registered_sidebars;// sidebar_generator::get_sidebars(); if(is_array($sidebars) && !empty($sidebars)){ foreach($sidebars as $sidebar){ if($selected_sidebar[$i] == $sidebar['name']){ echo "{$sidebar['name']}\n"; }else{ echo "{$sidebar['name']}\n"; } } } ?> with <select name="sidebar_generator_replacement[]"> <option value="0">None <?php $sidebar_replacements = $wp_registered_sidebars;//sidebar_generator::get_sidebars(); if(is_array($sidebar_replacements) && !empty($sidebar_replacements)){ foreach($sidebar_replacements as $sidebar){ if($selected_sidebar_replacement[$i] == $sidebar['name']){ echo "{$sidebar['name']}\n"; }else{ echo "{$sidebar['name']}\n"; } } } ?>
    get_queried_object(); $selected_sidebar = get_post_meta($post->ID, 'sbg_selected_sidebar', true); $selected_sidebar_replacement = get_post_meta($post->ID, 'sbg_selected_sidebar_replacement', true); $did_sidebar = false; //this page uses a generated sidebar if($selected_sidebar != '' && $selected_sidebar != "0"){ echo "\n\n\n"; if(is_array($selected_sidebar) && !empty($selected_sidebar)){ for($i=0;$i<sizeof($selected_sidebar);$i++){ if($name == "0" && $selected_sidebar[$i] == "0" && $selected_sidebar_replacement[$i] == "0"){ //echo "\n\n"; dynamic_sidebar();//default behavior $did_sidebar = true; break; }elseif($name == "0" && $selected_sidebar[$i] == "0"){ //we are replacing the default sidebar with something //echo "\n\n"; dynamic_sidebar($selected_sidebar_replacement[$i]);//default behavior $did_sidebar = true; break; }elseif($selected_sidebar[$i] == $name){ //we are replacing this $name //echo "\n\n"; $did_sidebar = true; dynamic_sidebar($selected_sidebar_replacement[$i]);//default behavior break; } //echo "\n"; } } if($did_sidebar == true){ echo "\n\n\n"; return; } //go through without finding any replacements, lets just send them what they asked for if($name != "0"){ dynamic_sidebar($name); }else{ dynamic_sidebar(); } echo "\n\n\n"; return; }else{ if($name != "0"){ dynamic_sidebar($name); }else{ dynamic_sidebar(); } } } /** * replaces array of sidebar names */ function update_sidebars($sidebar_array){ $sidebars = update_option('sbg_sidebars',$sidebar_array); } /** * gets the generated sidebars */ function get_sidebars(){ $sidebars = get_option('sbg_sidebars'); return $sidebars; } function name_to_class($name){ $class = str_replace(array(' ',',','.','"',"'",'/',"\\",'+','=',')','(','*','&','^','%','$','#','@','!','~','`','','?','[',']','{','}','|',':',),'',$name); return $class; } } $sbg = new sidebar_generator; function generated_dynamic_sidebar($name='0'){ sidebar_generator::get_sidebar($name); return true; } ?>

    Solutions Collecting From Web of "Hinzufügen von Menüseitenproblemen (Berechtigungen und Position)"

    Sie können etwas tun wie:

     // create your own page add_menu_page('my-page', 'My Page', 'My Page', 'parent-slug', 'my_plugin_options', '', '10'); // create the subpage under my-page add_submenu_page('parent-slug', 'Sidebars', 'Sidebars', 'manage_options', __FILE__, array('sidebar_generator','admin_page')); 

    Beachten Sie, dass der letzte Parameter auf add_menu_page eine 10 ist. Je höher die Zahl, desto niedriger ist die Position des Menüelements.

    HTH

    Mit add_menu_page können Sie dann die position mit add_submenu_page dann können Sie die Priorität add_action( 'admin_menu', '...', $priority)

     add_action('admin_menu', 'function_to_create_menu_page'); add_action('admin_menu', 'function_to_create_submenu_1_page', 100); add_action('admin_menu', 'function_to_create_submenu_2_page', 101); add_action('admin_menu', 'function_to_create_submenu_3_page', 103); 

    Ändern Sie einfach die letzte Nummer (Priorität), um die Position des Untermenüs zu ändern.