WordPress: Kategorie-Liste scrollt nicht mehr [Lösung]

Seit dem Update auf WordPress 6.6 lassen sich Kategorie-Listen im Admin-Bereich nicht mehr scrollen, Stattdessen werden sie komplett angezeigt – also alle Kategorien untereinander in einer alphabetischen Liste.

Wenn man nur 3-4-5 Kategorien verwendet mag das nicht weiter stören. Wenn man in seiner WordPress-Website aber dutzende oder sogar hunderte Kategorien verwendet kann das dazu führen, dass sich die Kategorien kaum noch sinnvoll nutzen lassen. Die Eingabemaske wird entsprechend der langen Kategorie-Liste in die Länge gezogen – und wer das Kategorie-Widget aus der rechten Seitenleiste in den Hauptbereich z.B. unterhalb des Texteditors gezogen hat ein Problem.

Ich hatte genau diese Anordnung – also die Kategorie-Liste unterhalb des WYSIWYG-Editors – gefolgt von einer Reihe eigener Eingabefelder, die ich über Advanced Custom Fields Pro (ACF) angelegt hatte. Nach dem Update wurden diese ACF-Felder nun von der ausgeklappten Kategorie-Liste in fast unerreichbare Tiefen hinunter gedrückt. Ein Zustand, den man vielleicht ein paar Tage lang ignorieren kann – der aber ein flüssiges Arbeiten mit WordPress fast unmöglich macht.

Ich muss dazu sagen, dass ich „natürlich“ den Classic Editor bevorzuge – und dass dieses Problem offenbar nur im Classic Editor auftritt. So lautet eine der Empfehlungen dann auch, nicht den Classic Editor zu nutzen. Diese Option scheidet für mich aber aus, da ich es gewohnt bin, meine EIngabemasken selbst zu bauen und so zu gestalten, wie ich es möchte.

Im WordPress-Forum fand ich dann eine einfache Lösung für das Problem: per CSS kann man die Kategorie-liste dazu bringen, sich so zu verhalten, wie vor dem Update – also so, dass sich alle Kategorien scrollen lassen.

Der CSS-Schnippsel würd eregulär über ein Stylesheet funktionieren, wenn man denn für den Administrationsbereich ein Stylesheet definiert hat. Das ist sicherlich eher selten der Fall. Per PHP lässt sich der CSS-Schnippsel aber auch einfach über die functions.php in den Admin-Bereich einbauen:

add_action('admin_head', 'admin_css_code');
function admin_css_code()
{
echo '<style>

.categorydiv div.tabs-panel
{
max-height: 200px;
}

</style>';
}

Der Code stammt ursprünglich von dem Nutzer @vinodkkumar –– allerdings waren bei seinem Lösungsvorschlag leider die Anführungszeichen falsch formatiert. Ich habe den Code-Schnippsel sozusagen repariert – einfach per copy-paste in die funstions-php einfügen und schon lässt sich die Kategorie-Liste wieder scrollen.

Hier die Diskussion im WordPress-Forum:
wordpress.org/support/topic/category-list-no-longer-scrolling/

Worpress Suche-Formular: Submit-Button-Text anpassen

Eigentlich wollte ich nur den Text des Submit-Buttons des Standard-Suche-Formulars anpassen. Eigentlich. Das ist aber offenbar gar nicht so einfach, denn das Suche-Formular wird mir einer recht einfach gestrickten Funktion aufgerufen, über die sich zumindest meines Wissens nach der Text des Submit-Buttons leider nicht anpassen lässt.

Hier die Standard-Funktion, über die man das Suche-Fenster an beliebiger Stelle in einem WordPress-Template platzieren kann:

get_search_form();

Es gibt natürlich eine Reihe von Plugins, die genau das machen – die also eine einfache Möglichkeit bieten, die verschiedenen Details des Suche-Formulars zu bearbeiten – also auch den text des Submit-Buttons. Aber warum sollte man ein weiteres Plugin installieren, wenn man doch nur den Text Submit-Buttons anpassen möchte?

Stattdessen können wir auch relativ einfach die Funktion get_search_form() überschreiben und mit unserem eigenen Code ergänzen.

/* custom search form */

function custom_search_form( $form ) {
$form = '
<section class="search"><form role="search" class="search-form" method="get" id="search-form" action="' . home_url( '/' ) . '" >
<label class="screen-reader-text" for="s">' . __( 'Search:' ) . '</label>
<input type="search" class="search-field" value="' . get_search_query() . '" name="s" id="s" placeholder="…" />
<input type="submit" class="search-submit" id="searchsubmit" value="'. esc_attr__( 'Search' ) .'" />
</form></section>
';

return $form;
}
add_filter( 'get_search_form', 'custom_search_form', 40 );

Das Script muss einfach in der funtions-php des aktiven Themes platziert werden – und schon lässt sich der text des Submit-Buttons ändern.

Der Code basiert auf der Funktion custom_search_form, die ich unter der Überschrift ‚Custom WordPress Search Form with a Function‘ bei nicolaslule.com gefunden habe: nicolaslule.com/how-to-customize-the-search-form-in-wordpress/

Auf der Seite finden sich ein paar weitere hilfreiche Tipps und Tricks – zum Beispiel, wie man die Suche auf einen bestimmten Post Type beschränkt – oder auch, wie man den Submit-Button mit einem Icon ersetzen kann.

WordPress Dashboard-Felder ‚Boxen über „Ansicht anpassen“ hinzufügen‘ entfernen

Im Plugin White Label CMS > “Einstellungen Tab” > “Custom CSS for Admin” folgenden CSS-Code hinzufügen:

#dashboard-widgets .postbox-container .empty-container{
    display: none;
}

Oder den CSS-Code in einem eigenen Stylesheet hinterlegen, das im Admin-Bereich geladen wird.

Die Lösung habe ich hier gefunden:

https://wordpress.org/support/topic/remove-add-boxes-from-the-screen-options-menu/

ACF Position „Nach dem Titel vor dem Inhalt“ funktioniert nicht (Lösung)

ACF Position high funktioniert nicht

Mit dem WordPress-Plugin ACF (Advanced Custom Fields) lassen sich zum Teil sehr komplexe Eingabemasken bauen. Umso wichtiger ist es, daß man auch bestimmen kann, an welcher Stelle welche Feldgruppe angezeogt wird. In ACF stehen dazu grundsätzlich erstmal drei Positionen zur Verfügung: „Nach dem Titel vor dem Inhalt“ (bzw. „High (after title)“ in der englischen Variante) läßt die Feldgruppe zwischen Titel und Texteditor erscheinen – „Nach dem Inhalt“ (bzw. „Normal (after content)“ in englisch) führt dazu, daß die Feldgrupper unterhalb des Texteditor angezeigt wird und bei Auswahl von „Seitlich neben dem Inhalt“ („Side“) wird die Feldgruppe in der Seitenleiste (rechts) angezeigt.  Meine favorisierte Position ist häufig die, bei der die zusätzlichen Eingabefelder zwischen Titel und Texteditor positioniert sind.

Beim Editieren einer Seite kann es dann aber passieren, daß man die Position der Feldgruppe versehentlich ändert. Dann sitzt diese plötzlich unterhalb des Texteditors. Leider kann man die Feldgruppe dann nicht einfach per Hand zurück schieben. Fast alle Elemente der Eingabemaske lassen sich auf fast alle Positionen verschieben – der Bereich zwischen Titel und Texteditor ist aber unerreichbar.

Mithilfe eines Code-Schnippsels, der in der functions.php platziert wird, kann man die manuelle Verschiebung aber rückgängig machen, bzw. aufheben.

function prefix_reset_metabox_positions(){
  delete_user_meta( wp_get_current_user()->ID, 'meta-box-order_post' );
  delete_user_meta( wp_get_current_user()->ID, 'meta-box-order_page' );
  delete_user_meta( wp_get_current_user()->ID, 'meta-box-order_YOUR_CPT_SLUG' );
}
add_action( 'admin_init', 'prefix_reset_metabox_positions' );

Den Code habe ich hier im ACF-Support-Forum gefunden:

Position : High (after title) not working

Aber vorsicht: die Funktion prefix_reset_metabox_positions sorgt dafür, daß die Meta-Boxen immer zurück auf ihre z-B. von ACF vorgegebene Position versetzt werden. Ein manuelles Umorganisieren der Eingabefelder und Feldgruppen ist dann nicht mehr möglich. Mir ist das gang recht – ich möchte nicht, daß Feldgruppen manuell auf eine andere Position geschoben werden. Wer der Redaktion aber diese Möglichkeit zur Umgestaltung der EIngabemaske lassen möchte, sollte den Code-Schnippsel nach erfolgreim Zurücksetzen wieder aus der functions.php entfernen.

Verhindern, dass WordPress große Bilder klein rendert („scaled“)

Wordpress scaled grosse Bilder

Wordpress scaled grosse Bilder – Screenshot/Montage T.Bortels/cpu20.de

Seit Version 5.3 werden „große Bilder“ von WordPress automatisch neu gerendert – also klein gerendert – und mit dem Hinweis „scaled“ im Dateinamen versehen. Das kann nützlich sein, um zu vermeiden, daß allzu große Bilder an die Nutzer ausgeliefert werden. Die Absicht ist also erstmal gut. Doch was gut gemeint ist muß nicht immer gut sein. Was ist ein „großes Bild“ aus Sicht von WordPress? Ab 2560px gilt ein Bild für WordPress als ein „großes Bild“.

Wer sein WordPress-Theme selbst baut möchte volle Kontrolle haben – auch und vor allem über die Größe der angezeigten Bilder. Das Feature, das die Bilder automatisch verkleinert und mit dem Hinweis „scaled“ im Dateinamen versieht, erscheint einem dann eher als Bug.

Um das Problem zu umgehen kann man diese neue Funktion manuell abschalten. Allerdings sollte man die entsprechende Anpassung nach Möglichkeit gleich zu Beginn einbauen, noch bevor zu viele Inhalte bzw. Bilder auf den Server geladen wurden. Sonst verbringt man wohlmöglich viel Zeit damit, die Bilder erneut hochzuladen.

Scaled-Funktion big_image_size_threshold deaktivieren

Um die Funktion nun zu deaktivieren muß man lediglich folgenden Code–Schnippsel einfach in die functions.php einfügen und der Spuk hat ein Ende:

// Prevent WordPress from Scaling Large Images
add_filter( 'big_image_size_threshold', '__return_false' );

Damit ist dieses Feature nun abgeschaltet.

Wie gesagt: am besten, man implementiert diesen Filter bevor man anfängt, viele große Bilder hochzuladen. Sonst muß man nämlich nachträglich nochmal alle großen Bilder hochladen.

Alternativ könnte man auch die Grenze anders definieren, von der an Bilder als große Bilder betrachtet bzw. behandelt werden. Möchte man beispielsweise, daß Bilder ab einer Seitenlänge von 4800px als „groß“ betrachtet werden, kann man folgenden Code-Schippsel in die functions.php einsetzen:

/**
 * Increases the threshold for scaling big images to 4800.
 * In this case all the images that are larger than 4800px (width or height) 
 * will be scaled to 4800px.
 *
 * @param $threshold
 * @return int
 */
function hff_big_image_size_threshold( $threshold ) {
	return 4800; // new threshold
}
add_filter('big_image_size_threshold', 'hff_big_image_size_threshold', 100, 1);

Hier die Seite zur Funktion bei make.wordpress.org/core/ …