Filtern Sie den Blogtitel, der in der Kopfzeile angezeigt wird

Ich wollte den in der Kopfzeile angezeigten Blog-Titel filtern, um verschiedene CSS-Stile auf verschiedene Titel-Teile / Wörter anzuwenden, also fügte ich die untenstehende function zu meiner (WP 4.7) Twenty Sevente Child-Thema functions.php hinzu und das funktionierte sehr gut. Das Problem ist, dass diese function den CSS-Code auch zum Meta-Titel hinzugefügt hat, der in der Titelleiste angezeigt wird. Wie repariere ich das?

/** Format the site title parts **/ add_filter( 'bloginfo', 'format_site_title_parts', 10, 2 ); function format_site_title_parts( $text, $show ){ if ('name' == $show) { $text = "Info" . "Psi" . ".md"; } return $text; } 

Titelleiste

Solutions Collecting From Web of "Filtern Sie den Blogtitel, der in der Kopfzeile angezeigt wird"

Entfernen Sie den Filter / die function und wenden Sie Ihr Markup in der PHP-Vorlage / Auslagerungsdatei an. Wenn Sie Hilfe benötigen, schreiben Sie, wo Sie den Titel ausgeben.


KLASSE

Hier ist, wie ich dies mit einer class einrichten könnte:

 if ( ! class_exists( 'ThemeCustomizations' ) ) { class ThemeCustomizations { static $inBody = false; public static function set_in_body_true() { static::$inBody = true; } public static function set_in_body_false() { static::$inBody = false; } public static function filter_bloginfo( $name, $show = null ) { if ( 'name' == $show && static::$inBody ) { $name = "Info" . "Psi" . ".md"; return "$name"; } else { return $name; } } } } add_action( 'wp_head', array ( 'ThemeCustomizations', 'set_in_body_true' ), PHP_INT_MAX ); add_action( 'wp_footer', array ( 'ThemeCustomizations', 'set_in_body_false' ), 0 ); add_action( 'bloginfo', array ( 'ThemeCustomizations', 'filter_bloginfo' ), 10, 2 ); 

STATISCH

Und die statische Variable einer function verwenden:

 function prefix__is_in_body( $isTrue = null ) { // static initializer is false static $inBody = false; // only overwrite if boolean supplied if ( is_bool( $isTrue ) ) { $inBody = $isTrue; } // return regardless of getter/setter return $inBody; } add_action( 'wp_head', function(){ prefix__is_in_body(true); }, PHP_INT_MAX ); add_action( 'wp_footer', function(){ prefix__is_in_body(false); }, 0 ); add_action( 'bloginfo', function($name, $show = null){ if ( 'name' == $show && prefix__is_in_body() ) { $name = "Info" . "Psi" . ".md"; return "$name"; } else { return $name; } }, 10, 2 ); 

ZAUBER

Singleton & Factory Muster + PHP magische Methoden.

 if ( ! class_exists( 'Magic' ) ) { class Magic { private static $__ = array (); public $_ = array (); function __construct( $args = null ) { if ( is_array( $args ) ) { foreach ( $args as $k => $v ) { $this->{$k} = $v; } } return $this; } public static function instance( $id = '', $args = null ) { if ( ! isset( self::$__[ $id ] ) ) { self::$__[ $id ] = new Magic($args); } return self::$__[ $id ]; } public function __get( $k ) { return isset( $this->_[ $k ] ) ? $this->_[ $k ] : null; } public function __set( $k, $v ) { return $this->_[ $k ] = $v; } public function __call( $k, $a ) { if ( isset($this->_[ $k ]) && is_callable( $this->_[ $k ] ) ) { return call_user_func_array( $this->_[ $k ], $a ); } } } } 

Jetzt mit der Magic class können Sie dies tun;

 $m = Magic::instance( '', array ( 'isBody' => false, 'action_wp_head' => function() { Magic::instance()->isBody = true; }, 'action_wp_footer' => function() { Magic::instance()->isBody = false; }, 'filter_wp_bloginfo' => function( $output, $show ) { return ( 'name' == $show && Magic::instance()->isBody ) ? 'InfoPsi.md' : $output; }, )); add_action( 'wp_head', array ( $m, 'action_wp_head' ), PHP_INT_MAX ); add_action( 'wp_footer', array ( $m, 'action_wp_footer' ), 0 ); add_filter( 'bloginfo', array ( $m, 'filter_wp_bloginfo' ), 10, 2 ); 

Also, das ist was ich habe endlich benutzt (Code Kredit an Alexandros Georgiou ). Ich weiß nicht, ob das eine gute Lösung ist, aber ich möchte einen einzigen gemeinsamen Platz haben (functions.php), um mein Kindthema zu steuern.

 $twentyseventeen_child_in_body = false; function twentyseventeen_child_action_wp_head_finished() { global $twentyseventeen_child_in_body; $twentyseventeen_child_in_body = true; } add_action( 'wp_head', 'twentyseventeen_child_action_wp_head_finished', PHP_INT_MAX ); function twentyseventeen_child_action_wp_footer_started() { global $twentyseventeen_child_in_body; $twentyseventeen_child_in_body = false; } add_action( 'wp_footer', 'twentyseventeen_child_action_wp_footer_started', 0 ); function twentyseventeen_child_filter_bloginfo( $name, $show = null ) { global $twentyseventeen_child_in_body; if ( 'name' == $show && $twentyseventeen_child_in_body ) { $name = "Info" . "Psi" . ".md"; return "$name"; } else { return $name; } } add_filter( 'bloginfo', 'twentyseventeen_child_filter_bloginfo', 10, 2 );