Cherry Framework – Überschreibungsfunktion in template-general.php

In WordPress Cherry Framework, ich versuche, Template-General.php Dateifunktionen zu bearbeiten, aber es ist anders nicht in der Lage, dies zu tun. Ich habe versucht, diesem Link zu folgen, hilft aber nicht.

Link für Cherry Framework zum Herunterladen der Dateistruktur ist: cherryframework4 \ lib \ functions \ template-general.php

Ich versuche, unter function zu überschreiben:

function cherry_get_site_logo( $location = 'header' ) { $logo_class = array(); switch ( $location ) { case 'header': $type = cherry_get_option( 'logo-type', 'text' ); $logo_img_ids = cherry_get_option( 'logo-image-path', false ); $tag = is_front_page() ? 'h1' : 'h2'; $logo_class[] = 'site-title'; $logo_class[] = $type . '-logo'; $link_class = ''; break; case 'footer': $type = cherry_get_option( 'footer-logo-type', 'text' ); $logo_img_ids = cherry_get_option( 'footer-logo-image-path', false ); $tag = 'div'; $logo_class[] = 'cherry-footer-logo'; $logo_class[] = $type . '-logo'; $link_class = 'footer-logo-link'; break; default: $tag = 'div'; $logo_class[] = $location . '-logo'; $link_class = ''; break; } $logo_class = apply_filters( 'cherry_logo_classes', $logo_class, $location ); $logo_class = array_unique( $logo_class ); $logo_class = array_map( 'sanitize_html_class', $logo_class ); if ( 'image' == $type && false != $logo_img_ids ) { $images = explode( ',', $logo_img_ids ); if ( count( $images ) > 1 ) { $logo_content = cherry_get_retina_logo( $images ); } else { $img = wp_get_attachment_url( $images[0] ); $logo_image_format = apply_filters( 'cherry_logo_image_format', '%3$s', $location ); $logo_content = sprintf( $logo_image_format, home_url( '/' ), esc_url( $img ), get_bloginfo( 'title' ) ); } } else { $logo_content = cherry_get_site_link( $link_class ); } $logo = $logo_content ? sprintf( 'https://wordpress.stackexchange.com/questions/226159/cherry-framework-overriding-function-in-template-general-php/%2$s', join( ' ', $logo_class ), $logo_content, $tag ) : ''; return apply_filters( 'cherry_get_site_logo', $logo, $location ); } 

Wer ist da? Hilf mir, dieses Problem zu finden.

Solutions Collecting From Web of "Cherry Framework – Überschreibungsfunktion in template-general.php"

Obwohl das Überschreiben der function in einem untergeordneten Thema oft ein guter Weg ist, sieht es so aus, als ob dieses Thema dies nicht mit dieser speziellen function einrichtet (weil es nicht zuerst nach function_exists() sucht, bevor es neu definiert wird – was wird einen Fehler verursachen).

Sie haben Ihnen jedoch eine Möglichkeit gegeben, diese mit Filtern zu überschreiben.

Am Ende ihrer function wird alles, was sie zurückgeben, durch den cherry_get_site_logo Filter cherry_get_site_logo .

Jedes Mal, wenn Sie apply_filters() im Code eines anderen apply_filters() ausführen, können Sie sich daran beteiligen 🙂

Um dies zu erreichen, müssen Sie eine eigene Filterfunktion hinzufügen. In Ihrer function können Sie entweder ihre Ausgabe ändern (z. B. durch etwas wie str_replace() oder preg_replace() , um Teile davon zu ersetzen), oder Sie können einfach ignorieren, was sie getan haben, und Ihre eigene Ausgabe bereitstellen (was ich verstehe) was du willst).

Um in diesem Fall die Ausgabe ihrer function zu überschreiben, müssen Sie nur Folgendes tun:

 add_filter("cherry_get_site_logo", "wpse_226159_site_logo"); function wpse_226159_site_logo($logo, $location){ $logo = "This is my overriden logo"; return $logo; } 

Dadurch wird ihre Logoausgabe vollständig durch den Text This is my overriden logo . Ersetze das natürlich durch was immer du willst.

Dieser Code wird in die functions.php Datei Ihres Child-Theme eingefügt.