Kann man die Klasse eines a-elements in standard-widgets beieinflussen

  • Hallo zusammen, mich würde gerne interessieren, ob man die Klasse eines A-Elements in den Standard-Widgets irgendwie beeinflussen kann.

    Den bei der Sidebar-Registrierung kann man nur "before_widget", "after_widget" und "title" beieinflussen.
    Den Code des Inhalts allerdings nicht.
    Beispiel:

    HTML
    <aside id="..." class="...">
    <ul>
    <li>
    <a href="..." class="..."></a>
    <a href="..." class="..."></a>
    <a href="..." class="..."></a>
    <a href="..." class="..."></a>
    </li>
    </ul>
    </aside>

    Die class="..." innerhalb des <a>-elements würde ich gern beieinflussen.
    Hoffe es ist verständlich genug.

    Vielleicht gibt es auch eine filter-möglichkeit dazu.
    z.B.

    PHP
    function meineFunktion()
    {
    .....
    }
    add_filter('WP_Nav_Menu_Widget', 'meineFunktion');


    oder so ähnlich???

    Ein Hinweis im Codex wäre evtl. auch hilfreich. Danke im Voraus.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hallo

    Also:
    1.) das a-Tag unterstützt gar kein class-Attribut
    2.) Schaut die Struktur eines mit WP erstelletn Menüs anders aus. In etwa:

    HTML
    <ul>
    <li>
    <a>.....</a>
    </li>
    <li>
    <a>.....</a>
    </li>
    <ul>


    3.) bekommt jeder Menüpunkt der mit WP erstellt wird schon eine eindäutige Klasse im li-Tag mitgegeben. -> Darüber lässt sich auch jedes a-Tag indivisduell ansprechen
    4.) wenn das nicht reicht, kannst du im Dashboard unter Design>>Menüs jedem Menüpunkt in den Einstellungen auch unter "CSS-Klassen (optional)" eine ganz eigene Klasse festlegen.

    LG, pixselig

  • Vielen Dank für flotte Antwort, das mit dem Stylen der Klassen über Einstellungen kenne ich natürlich auch.
    Es sollte aber nach Möglichkeit in der functions.php eines Themes platz finden, das Theme wird mit Bootstrap-Framework bereichert und deswegen auch entsprechende Klassen nach Möglichkeit bekommen.
    Darum dachte ich dass es evtl. eben Filtermöglichkeiten gibt.
    Dann könnte man evtl. mit

    PHP
    str_replace('<a','<a class=""', $variable)

    den code ja ändern.
    Hätte ja sein können, weil das im Content funktioniert. Wäre ja möglich dass es auch in widgets möglich wäre.
    Beispiel:

    PHP
    function meineFunktion($text)
    {
    $return = str_replace('<a', '<a class="..."', $text);
    return $return;
    }
    add_filter('WP_Nav_Menu_Widget', 'meineFunktion');

    Habe ich so getestet, aber leider ohne Erfolg.

  • Das könnte evtl. mit jQuery zu lösen sein.
    Und zwar nach der Art von

    Code
    jQuery("#asideID a").removeClass("removeclass");
    jQuery("#asideID a").addClass("newclass");


    removeclass und newclass müssen natürlich durch die entspr. Klassennamen und der jQuery-Selector (#asideID) angepasst werden.

    Der Code kann dann z.B. in der footer.php gespeichert werden.

  • Mit jQuery klappt es. Wollte eigentlich überall wo es nicht unbedingt erforderlich ist auf javascript verzichten, Andererseits so schlimm ist es nicht, angezeigt werden ja die Links. Werden nur anders dargestellt. Danke nochmal...

  • Zitat

    1.) das a-Tag unterstützt gar kein class-Attribut

    Nein, das Universalattribut class ist auch an einem A möglich.
    (praktisch überall, außer im base, basefont, head, html, meta, param, script, style und title)

    Man kann auch gern mal in add_adminbar schauen, was sich dort in den Meta-Attributen für den Link versteckt.

  • add_adminbar, bzw. add_menu, sind einfach nur Beispiele im WordPress, welche zeigen, daß es bei Links (A) ein Class-Attribut gibt, denn dort kann man dessen Inhalt übergeben.
    http://codex.wordpress.org/Class_Referenc…in_Bar/add_menu

    Ansonsten könnte man es auch dort nachlesen.
    http://de.selfhtml.org/html/attribute/allgemeine.htm
    http://de.selfhtml.org/html/referenz/…versalattribute

    Und wer es ganz genau wissen will, der schaut in die entsprechende HTML-Spezifikation.
    http://www.w3.org/TR/html401/index/attributes.html

    Einmal editiert, zuletzt von himitsu (21. Januar 2015 um 12:44)

  • add_adminbar, bzw. add_menu, sind einfach nur Beispiele im WordPress, welche zeigen, daß es bei Links (A) ein Class-Attribut gibt, denn dort kann man dessen Inhalt übergeben.
    http://codex.wordpress.org/Class_Referenc…in_Bar/add_menu

    Ansonsten könnte man es auch dort nachlesen.
    http://de.selfhtml.org/html/attribute/allgemeine.htm
    http://de.selfhtml.org/html/referenz/…versalattribute

    Und wer es ganz genau wissen will, der schaut in die entsprechende HTML-Spezifikation.
    http://www.w3.org/TR/html401/index/attributes.html

    Schön das du mich korrigierst!
    Allerdings hättest du dir ganze viel Links sparen können - einer hätte es auch getan ;-)
    Ausserdem bringen diese Links den TE nicht wirklich weiter.

    @TE:
    Du hast das ganze ja schon gelöst, wenn auch nur mit jQuery.
    Für Widgets gibt es leider keinen Filter-Hook, allerdings kommt da in Zukunft etwas - in der 4.2 Alpha ist da schon etwas enthalten -> du könntest dann in Zukunft auf JS verzichten.
    Ausserdem kannst du, sollte es sich bei dem Widget um ein individuelles Menü handeln, einen custom nav walker erstellen -> http://codex.wordpress.org/Function_Refer…av_menu#Example
    Für Wordpress und Bootstrap gibt es sogar schon einen: https://github.com/twittem/wp-bootstrap-navwalker . Allerdings ist der für ein Headermenu, du könntest ihn aber als Ausgangspunkt nehmen und dur deine benötigten Klassen ersetzen. Dann noch ein eigenes Menüwidget Coden (geht schnell) und darin deinen eigenen nav_walker aufrufen, und du hast es ganz ohne JS.

    LG, pixselig

  • Es gibt doch bestimmt irgendein Filter-Event, welches auch den Widgetinhalt bearbeiten lässt?


    Ansonsten wäre es eventuell möglich den gewünschen Style durch die übergeordneten HTML-Elemente zu setzen.
    Also das Unterelement "a" innerhalb des aside, ul oder li.

    Code
    .xyz a {
        ...;
    }
    HTML
    <aside id="xyz" class="...">
    <ul>
    <li>
    <a href="http://forum.wpde.org/plugins-und-widgets/plugins-und-widgets/..."></a>

    Nur die Styles, welche direkt in <a class="..."> definiert sind, können damit nicht überschrieben werden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!