Tworzę motyw potomny za pomocą Wordpress 3.4.2 i wersji programistycznej Options Framework autorstwa David Price . To jest mój pierwszy motyw i jestem stosunkowo nowy, więc zapoznałem się z Kodeksem Wordpress i sprawdziłem rejestrację elementów w API.
Bez ingerencji w jakiekolwiek pliki zewnętrzne poza moim motywem zastanawiałem się, czy istnieje sposób, aby zmienić położenie strony Opcje motywu w hierarchii menu Wygląd - więc kiedy mój motyw jest aktywowany, pozycja nie jest podobna pierwszy obraz, ale jak drugi.
Wiem, że możesz utworzyć menu (takie jak karta Wygląd , wtyczki , użytkownicy itp.) Lub podmenu ( motywy , widżety , menu itp.), Ale jak bym poszedł o ustawianiu podmenu, powiedz, drugi z góry?
Z tego, co zbieram, gdzieś jest wywołane zamówienie i inne dodatkowe strony w functions.php
po nim umieszczane są pliku?
W moim pliku 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';
}
Dzięki.
źródło
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Linia 1444:foreach ($submenu[$menus] as $index => $value){
iWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Linia 1468:ksort($submenu[$menus]);
Odpowiedzi:
Oto przykład;
Najpierw ustal kolejność elementów podmenu na podstawie klucza tablicy, którą możesz wykonać
var_dump
globalnej zmiennej podmenu $, która wyświetli następujące;(Korzystam z menu Postów i podmenu jako przykładu)
Widzimy, że mój element podmenu jest dodawany do tablicy za pomocą klucza 17 po elementach domyślnych.
Jeśli na przykład chcę dodać element podmenu, bezpośrednio po Wszystkich postach elemencie podmenu muszę to zrobić, ustawiając klawisz tablicy na 6, 7, 8 lub 9 (odpowiednio po 5 i przed 10).
Tak to się robi...
Wynik,
... spróbuj i daj nam znać, jak idziesz!
Aktualizacja 1:
Dodaj to do pliku functions.php;
Moja aktualizacja zawiera nieco łatwiejszy sposób obsługi ustawień pozycji menu, wystarczy podać nazwę strony podmenu i żądaną pozycję w menu.
Jeśli jednak wybierzesz stronę podmenuAby to obejść, przykład Kaisera zapewnia podstawowe sprawdzenie tego.$location
równą stronie istniejącego klucza, zastąpi on ten klucz twoją, dlatego element menu zniknie, a element menu zostanie zastąpiony. W takim przypadku zwiększ lub zmniejsz numer, aby poprawnie zamówić menu. Podobnie, jeśli ktoś zainstaluje wtyczkę, która działa na ten sam obszar menu i dla którego ma to samo,$location
co element podmenu, wystąpi ten sam problem.Aktualizacja 2:
Dodałem dodatkowy blok kodu, który sprawdza wszystkie istniejące klucze w tablicy względem naszych pożądanych,
$location
a jeśli zostanie znalezione dopasowanie, zwiększymy naszą$location
wartość1
, aby uniknąć wzajemnego zastępowania się elementów menu. To jest kod odpowiedzialny za to,Aktualizacja 3: (poprawiono skrypt, aby umożliwić sortowanie wielu pozycji podmenu)
W powyższym przykładzie możesz kierować reklamy na wiele podmenu i wiele pozycji na podmenu, ustawiając odpowiednio parametry w
$target_menu
zmiennej, która zawiera wielowymiarową tablicę wartości.Ta poprawka zapobiegnie wzajemnemu nadpisywaniu się elementów podmenu, jeśli mają one ten sam klucz (pozycję), ponieważ będzie on przechodził, aż znajdzie dostępny klucz (pozycja), który nie istnieje.
źródło
Warning: Invalid argument supplied for foreach() in /wp-content/themes/mythemename/functions.php on line 1444
Linia 1444:foreach ($submenu[$menus] as $index => $value){
iWarning: ksort() expects parameter 1 to be array, null given in /wp-content/themes/mythemename/functions.php on line 1468
Linia 1468:ksort($submenu[$menus]);
Menu administratora (i jego problemy)
Ponieważ w menu administratora poważnie brakuje jakichkolwiek haczyków i publicznego interfejsu API (które umożliwiają przenoszenie elementów), musisz skorzystać z kilku obejść. Poniższa odpowiedź pokazuje, co czeka na Ciebie w przyszłości i jak możesz się obejść, o ile mamy obecny stan podstawowy.
Najpierw muszę zauważyć, że scribu pracuje nad łatką do menu administratora, która powinna znacznie ułatwić obsługę. Obecna struktura jest dość popsuta i napisałem o niej artykuł, który wkrótce będzie przestarzały. Spodziewaj się, że WP 3.6 całkowicie zmieni rzeczy.
Jest też kwestia, że nie powinieneś już używać stron Opcje do motywów. Do tego celu służy obecnie „Theme Customizer” .
Wtyczka
Napisałem wtyczkę, która testuje to z domyślną stroną „Opcje motywu” dla strony TwentyEleven / Ten options. Jak widać, nie ma prawdziwego interfejsu API, który pozwalałby na dowolne pozycje. Musimy więc przechwycić globalne.
W skrócie: wystarczy postępować zgodnie z komentarzami i rzucić okiem na powiadomienia administratora, które dodałem, aby dać ci jakieś wyniki debugowania.
Powodzenia i miłej zabawy.
źródło
Niestandardowe filtry
Istnieje inna możliwość osiągnięcia tego. Nie pytaj mnie, dlaczego wcześniej o tym nie myślałem. W każdym razie istnieje filtr dedykowany do niestandardowej kolejności menu. Po prostu ustaw,
true
aby zezwolić na niestandardowe zamówienie. Następnie masz drugi hak, aby zamówić pozycje w menu głównym. Tam po prostu przechwytujemyglobal $submenu
i przełączamy nasze pozycje podmenu.Przykład ten przesuwa element dietetyczne powyżej te widgety pozycji wykazać jego funkcjonalność. Możesz dostosować to, co chcesz.
źródło
function wpse70916_custom_submenu_order( $menu )
powiedzeniu, zmienić kolejność nie tylko Menu , ale także Motywu Opcje , widżety , edytor itp. Czynią go dość elastycznym, a także, aby elementy się nie zastępowały? Dziękuję Ci.