Estoy desarrollando un tema secundario con Wordpress 3.4.2 y la versión de desarrollo del Marco de opciones de David Price . Este es mi primer tema y soy relativamente nuevo en esto, así que he echado un vistazo al Codex de Wordpress y he verificado el registro de elementos en la API.
Sin alterar ningún archivo externo fuera de mi tema, me preguntaba si había una forma de reorganizar la ubicación de la página Opciones de tema dentro de la jerarquía del menú Apariencia , por lo que cuando mi tema está activado, la posición no es como la primera imagen pero como la segunda.
Sé que puede crear un menú (como la pestaña Apariencia , Complementos , Usuarios , etc.) o un submenú ( Temas , Widgets , Menús , etc.), pero ¿cómo haría para configurar un submenú? ¿desde la parte superior?
Por lo que deduzco, ¿en algún lugar se llama un pedido y functions.php
se colocan otras páginas adicionales dentro del archivo después de esas?
En mi archivo functions.php:
// Add our "Theme Options" page to the Wordpress API admin menu.
if ( !function_exists( 'optionsframework_init' ) ) {
define( 'OPTIONS_FRAMEWORK_DIRECTORY', get_template_directory_uri() . '/inc/' );
require_once dirname( __FILE__ ) . '/inc/options-framework.php';
}
Gracias.
fuente
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Línea 1444:foreach ($submenu[$menus] as $index => $value){
y laWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
línea de 1468:ksort($submenu[$menus]);
Respuestas:
Aquí hay un ejemplo;
Primero, para determinar el orden de los elementos del submenú en función de su clave de matriz, puede hacer un
var_dump
en la variable global $ submenu que generará lo siguiente;(Estoy usando el menú Publicaciones y el submenú como ejemplo)
Podemos ver que mi elemento del submenú se agrega a la matriz con una clave de 17 después de los elementos predeterminados.
Si, por ejemplo, deseo agregar mi elemento del submenú, directamente después del elemento del submenú Todas las publicaciones , debo hacerlo configurando mi clave de matriz en 6, 7, 8 o 9 (cualquier cosa después de 5 y antes de 10 respectivamente.
Así es como lo haces ...
Resultado,
... pruébalo y cuéntanos cómo te va.
Actualización 1:
Agregue esto a su archivo functions.php;
Mi actualización incluye una forma un poco más fácil de manejar la configuración de la posición de su menú, solo necesita estipular el nombre de su página de submenú y la posición que desea dentro del menú.
Sin embargo, si selecciona una página de submenúPara evitar eso, el ejemplo de Kaiser proporciona algunas comprobaciones básicas para eso.$location
igual a la de una tecla existente, anulará esa tecla con la suya, por lo que el elemento de menú desaparecerá con su elemento de menú en su lugar. Aumente o disminuya el número para ordenar correctamente su menú si ese es el caso. De manera similar, si alguien instala un complemento que afecta esa misma área de menú, y para el que tiene el mismo elemento$location
que su submenú, se producirá el mismo problema.Actualización 2:
He agregado un bloque de código adicional que verifica todas las claves existentes en la matriz con respecto a nuestra deseada
$location
y, si se encuentra una coincidencia, incrementaremos nuestro$location
valor1
para evitar que los elementos del menú se anulen entre sí. Este es el código responsable de eso,Actualización 3: (secuencia de comandos revisada para permitir la clasificación de múltiples elementos del submenú)
En el ejemplo anterior, puede seleccionar múltiples submenús y múltiples elementos por submenú configurando los parámetros en consecuencia dentro de la
$target_menu
variable que contiene una matriz multidimensional de valores.Esta revisión evitará que los elementos del submenú se sobrescriban entre sí si tienen la misma clave (posición), ya que se desplazará hasta encontrar una clave disponible (posición) que no existe.
fuente
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Línea 1444:foreach ($submenu[$menus] as $index => $value){
yWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Línea 1468:ksort($submenu[$menus]);
El menú de administración (y sus problemas)
Como el menú de administración carece de ganchos y una API pública (que permite mover los elementos), debe usar algunas soluciones. La siguiente respuesta le muestra lo que le espera en el futuro y cómo puede solucionarlo siempre que tengamos el estado actual del núcleo.
Primero tengo que tener en cuenta que scribu está trabajando en un parche del menú de administración que debería facilitar mucho el manejo. La estructura actual está bastante desordenada y he escrito un artículo al respecto que pronto quedará desactualizado. Espere que WP 3.6 cambie las cosas por completo.
Luego también está el punto, que ya no deberías usar páginas de Opciones para temas. Existe, hoy en día, el »Personalizador de temas« para eso.
El complemento
Escribí un complemento que prueba esto con la página predeterminada "Opciones de tema" para la página de opciones TwentyEleven / Ten. Como puede ver, no hay una API real que permita ninguna posición. Entonces tenemos que interceptar lo global.
En resumen: solo siga los comentarios y eche un vistazo a los avisos de administrador, que agregué para darle algunos resultados de depuración.
Buena suerte y diviertete.
fuente
Filtros personalizados
Hay otra posibilidad de lograr esto. No me preguntes por qué no lo había pensado antes. De todos modos, hay un filtro dedicado a un orden de menú personalizado. Simplemente configúrelo
true
para permitir un pedido personalizado. Luego tienes un segundo gancho para ordenar los elementos del menú principal. Allí solo interceptamosglobal $submenu
y cambiamos los elementos de nuestro submenú.Este ejemplo mueve el elemento Menús sobre el elemento Widgets para demostrar su funcionalidad. Puedes ajustarlo a lo que quieras.
fuente
function wpse70916_custom_submenu_order( $menu )
para decir, reordenar no solo el Menú , sino también el Tema ¿Opciones , widgets , editor , etc., lo que lo hace bastante flexible y también para que los elementos no se anulen entre sí? Gracias.