Wie komme ich von search_theme_directories () zum $ stylesheet (name) für switch_theme ()

Ich habe ein Thema. Es hängt von einem Plugin ab. Wenn Sie versuchen, das Theme zu aktivieren und das Plugin nicht installiert ist, dann möchte ich switch_theme() auf ein anderes (zufälliges **) Theme in der search_theme_directories() -Liste setzen.

Ich kann den $template Wert vom Schlüssel des Arrays erhalten, der von search_theme_directories() . Aber ich kann nicht herausfinden, wie man das $stylesheet bekommt.

Bei diesem Ansatz ist es am besten, zu überprüfen, ob ein Thema ein Kind oder ein Elternteil ist. Ohne ins Detail zu gehen, würde ich lieber das übergeordnete Thema als Standard auswählen.

Vielleicht gibt es einen besseren Weg, dies zu tun? Ich würde annehmen, dass WP etwas Ähnliches eingebaut hat, aber ich kann das auch nicht genau sagen. Kurz gesagt, ich höre, wenn du Ideen hast 🙂

Wichtig

Ich konnte dies nicht mit: search_theme_directories() . Dieses Tag existiert nicht und ich habe nicht den Vertreter, es hinzuzufügen. Könnte jemand mit etwas Saft es der Liste der gültigen Tags hinzufügen? Vielen Dank.

Hinweis: Ich werde zuerst nach Twenty Twelve und Twentyvenven suchen und dann, wenn nötig, einen auswählen, wenn sie nicht da sind.

Solutions Collecting From Web of "Wie komme ich von search_theme_directories () zum $ stylesheet (name) für switch_theme ()"

Aber ich kann nicht herausfinden, wie man das $ Stylesheet bekommt.

Einfach.

 $themes = search_theme_directories(); // a random theme $themename = array_rand($themes,1); // that random theme's stylesheet $stylesheet = content_url('/themes/'.$themes[$themename]['theme_file']); // The absolute path to that theme's stylesheet $stylepath = WP_CONTENT_DIR.'/themes/'.$themes[$themename]['theme_file']; 

Ein zufälliges Thema zu bekommen, das kein Kind ist, ist mehr involviert. Ich denke, das ist es doch. Es funktioniert beim Testen, aber nicht als rigoros getestet.

 $themes = search_theme_directories(); $rand_theme = false; while (!$rand_theme) { if (empty($themes)) { break; } $themename = array_rand($themes,1); $theme_obj = wp_get_theme($themename); // Parent themes don't have a 'Template' $template = $theme_obj->get('Template'); if (empty($template)) { $rand_theme = $themename; break; } else { unset($themes[$themename]); } } switch_theme($rand_theme); 

wp_get_theme gibt ein wp_get_theme zurück. Ich setze $rand_theme auf den Themennamen, da switch_theme erwartet.

So wird das Thema bei jedem Laden der Seite wechseln. Lass das in das Plugin-Verzeichnis und du hast ein ziemlich nerviges Plugin 🙂