2016-08-22 2 views
0

Ich möchte die Ausgabe für get_header_image_tag Funktion ändern, um den genauen HTML auszugeben, den ich möchte. Ich möchte auch in der Lage sein, Daten an den Ausgang hinzuzufügen, wie neue srcset, die nicht abgedeckt sind ...WordPress - Überschreiben/Filtern get_header_image_tag

Ich habe versucht, apply_filters get_header_image_tag zu verwenden, um es zu testen, aber konnte es nicht arbeiten:

apply_filters('get_header_image_tag', "<img src>", get_custom_header(), ['url' => 'test']); 
echo get_header_image_tag(); 

Ich bin ziemlich überzeugt, dass mein Verständnis der Funktionsweise der apply_filters das Problem dort sein könnte ... Ich habe darüber gelesen, aber ich kann mich nicht mit den Parametern herumschlagen. Die meisten Beispiele, die ich online gefunden habe, verwendeten nur einen Haken und einen einzelnen Wert.

Die Art, wie ich es verstanden habe, möchte ich die Ausgabe <img src=url> sein, indem Sie die Daten in get_custom_header() verwenden und das URL-Attribut durch 'test' ersetzen.

Was jedoch ausgegeben wird, ist der Standard get_header_image_tag. Ich habe auch die apply_filters direkt Echo versucht:

echo apply_filters('get_header_image_tag', "<img src>", get_custom_header(), ['url' => 'test']); 

Aber dann nur <img src> ausgegeben ...

Antwort

1

Sie völlig recht, es ist Ihr Verständnis, wie Wordpress-Filter zu verwenden, die das ist Ausgabe :)

Sie wenden einen Filter an, wenn Sie apply_filters() verwenden. Um Ihren eigenen Filter zum get_header_image_tag Hook hinzuzufügen, müssen Sie add_filter() verwenden. Hier ist ein Beispiel dafür, wie ein Filter hinzugefügt aussehen sollte:

// define the get_header_image_tag callback 
function filter_get_header_image_tag($html, $header, $attr) { 
    // make filter magic happen here... 
    return $html; 
}; 

// add the filter 
add_filter('get_header_image_tag', 'filter_get_header_image_tag', 10, 3); 

Hier ist ein Beispiel, wie Sie die volle Leistung von get_header_image_tag steuern:

function header_image_markup($html, $header, $attr) { 
    return '<figure><img src="'.$attr['src'].'" width="'.$attr['width'].'" height="'.$attr['height'].'" alt="'.$attr['alt'].'" srcset="'.$attr['srcset'].'" sizes="'.$attr['sizes'].'"></figure>'; 
} 

add_filter('get_header_image_tag', 'header_image_markup', 20, 3); 

Aber, welche Version von WP sind Sie benutzen? Ich bin mir ziemlich sicher, dass srcset im get_header_image_tag() so unterstützt wird, wie es gerade erschien, als ich es gerade benutzte.

+0

Danke, habe ich gestern über die add_filter Sache herausgefunden ... Dann einige Stunden später, dass es tatsächlich überschreiben die Ausgabe mit den Standardparametern xD Ich benutze die letzte Version von WP immer jedoch, während der srcset unterstützt wird wir wollen die Ausgabe selbst steuern :) Ich plane, mehr über add_filter, apply_filter, add_action und do_action zu lesen;) – Dacramash

+0

@Dacramash Hahah, ich kenne das Gefühl :) Action und Filter sind super! [Wordpress hat 2000+ Haken] (https://developer.wordpress.org/reference/hooks/), also gibt es viel zu spielen :) – lassemt