Seite 2
Und so konnte ich mich dann dem nächsten Problem zuwenden. Und das waren die Artikel-Kategorien. Die Beiträge in besagtem Presseportal sind in knapp dreißig Rubriken einsortiert. In dem Erfassungsformular für neue Pressemitteilungen wird denn auch von den Einsender:innen verlangt, dass sie sich für eine Rubrik entscheiden.
Nun kann man in WPForms sehr einfach Dropdown-Felder anlegen und mit den vorhandenen Kategorien verknüpfen. Zunächst hatte ich die Funktion Dynamische Wahlmöglichkeiten nicht verwendet, ein eigenes Formularfeld eingerichtet und die vorhandenen Kategorien über eine Liste eingelesen. So konnte ich die erste Option „Allgemeines“ löschen und durch die Anzeige „Bitte eine Rubrik auswählen“ ersetzen.
Erst Tage später bemerkte ich dann, dass hier zwar eine Kategorie ausgewählt werden konnte, dies aber nicht entsprechend in der WordPress-Datenbank gespeichert wurde und alle neuen Artikel unter „Allgemeines“ landeten. Das ist die Rubrik in WordPress, die man zwar umbenennen, aber nicht löschen kann, und in die automatisch auch all jene Posts einsortiert werden, die keiner Kategorie zugeordnet sind. Selten so gelacht 🤣
Dann habe ich an dem Formular rumgefummelt, aber nirgendwo eine Möglichkeit gefunden, die vermaledeite Option zu entfernen. Den WPForms-Support zu belästigen kam mir angesichts der bislang gemachten (oder besser: nicht gemachten) Erfahrungen mit diesem Service gar nicht erst in den Sinn. Also musste eine andere Lösung her.
Wenn ich im Formular nicht beeinflussen kann, wie die Optionen zu ändern sind, dann musste wohl oder übel die Anpassung später erfolgen, also während die Seite in WordPress aufgebaut wird. Nach einiger Fummelei kam folgender Schnipsel, wiederum für die functions.php des Themes oder ein entsprechendes Plugin (wie gesagt: ich nehme da Snippets) heraus:
function text_ersetzen($content){
global $post;
if ($post->ID == 123456){
$string = '<option value="1" > Allgemein</option>';
$replace = '<option value="">--Passende Rubrik wählen--</option>';
$content = str_replace( $string, $replace, $content );
}
return $content;
}
add_filter('the_content', 'text_ersetzen', 12, 1);
Was hier passiert, ist einfach: Wenn die Seite mit der ID 123456 (eben die ID der Formularseite) aufgerufen wird, setzt der Hook bei ‚the_content‚ ein und ersetzt die Option ‚Allgemein‚ mit einer neuen Option ohne Value und mit dem Text, der Besucher*innen angezeigt wird. Das Feld ist als ‚erforderlich‚ markiert und akzeptiert die leere Value folglich nicht, es muss also eine Auswahl getroffen werden, bevor das Formular übertragen wird.
Wesentlich ist hier auch die ‚12‚ in der add_filter-Zeile. WordPress arbeitet sich beim Seitenaufbau in einer bestimmten Reihenfolge durch die verschiedenen Bereiche. Im Netz fand ich den Hinweis, dass an Position 11 der Text zusammengestellt wird, den es hier zu ändern gilt. Also darf die str_replace-Operation erst danach erfolgen.
Merke: Man darf durchaus ein wenig blöd sein, aber man muss sich immer zu helfen wissen 😇
Und hier für alle, die der Welt was sagen zu müssen glauben und gern eine (oder auch mehrere) Pressemitteilung(en) veröffentlichen wollen, der Link zur Neuregistrierung beim kostenlos nutzbaren Presseportal fair-NEWS.