Support » Allgemeine Fragen » Daten werden nicht an wp_head angehängt / im header angezeigt

  • Hi,

    ich versuche gerade mein eigenes Plugin um eine weitere Funktion zu erweitern.
    Daten aus einem Textfeld sollen an den Header und Footer übergeben bzw. im Header und Footer angezeigt werden.

    Die Eingabe und Speicherung der Daten über das Textfeld in die Datenbank funktioniert.
    mit get_option werden die gespeicherten Daten dann geholt und eigentlich mit der add_action in den header/footer übergeben. Sie werden aber nicht im header/footer angezeigt.

    Ich habe schon mehrere Tests durchgeführt und aktuell gibt er mit mir den Fehler raus wenn ich das Plugin aktiviere:

    Das Plugin erzeugte 22 Zeichen mit unerwarteter Ausgabe während der Aktivierung. Wenn du „headers already sent“-Hinweise, Probleme mit Syndication-Feeds oder andere Probleme bemerkst, versuche, dieses Plugin zu deaktivieren oder zu entfernen.

    Ich vermute das die add_action an einer falschen stelle steht…

    Die Testseite läuft auf localhost mit aktueller WP-Version. Keine weiteren Plugins installiert.

    Hier mal der Code-Auszug:

    <?php
    /**
     * @package  myPlugin
     */
    namespace Inc\Base;
    
    use Inc\Api\SettingsApi;
    use Inc\Base\BaseController;
    use Inc\Api\Callbacks\AdminCallbacks;
    use Inc\Api\Callbacks\HeaderFooterCallbacks;
    
    // Insert Header und Footer Funktion
    // 
    		
    
    class InsertHeaderFooter extends BaseController
    {
    	public $header_scripts;
    	
    	public $footer_scripts;
    	
    	public $settings;
    	
    	public $callbacks;
    	
    	public $callbacks_ihf;
    
    	public $subpages = array();
    	
    	public function register()
    	{
    		if ( ! $this->activated( 'ittcp_insert_hf' ) ) return;
    
    		$this->settings = new SettingsApi();
    
    		$this->callbacks = new AdminCallbacks();
    		
    		$this->callbacks_ihf = new HeaderFooterCallbacks();
    
    		$this->setSubpages();
    						
    		$this->setSettings();
    		
    		$this->setSections();
    		
    		$this->setFields();
    
    		$this->ittIhafDisplayHeader();
    		
    		
    		$this->ittIhafDisplayFooter();
    		
    
    		$this->settings->addSubPages( $this->subpages )->register();
    
    		add_action( 'init', array( $this, 'activate' ) );
    		
    		add_action( 'wp_head', 'ittIhafDisplayHeader' );
    		add_action( 'wp_footer', 'ittIhafDisplayFooter' );
    			
    	
    		
    	}
    
    	public function setSubpages()
    	{
    		$this->subpages = array(
    			array(
    				'parent_slug' => 'ittcp_plugin', 
    				'page_title' => 'Insert Header Footer', 
    				'menu_title' => 'Header Footer Funktion', 
    				'capability' => 'manage_options', 
    				'menu_slug' => 'ittcp_header_footer', 
    				'callback' => array( $this->callbacks, 'ittcpAdminIhf' )
    			)
    		);
    	}
    	
    	
    	
    	public function setSettings()
    	{
    		$args = array(
    			array(
    				'option_group' => 'ittcp_plugin_ihf_settings',
    				'option_name' => 'ittcp_plugin_ihf',
    				'callback' => array( $this->callbacks_ihf, 'ihfSanitize' )
    				)
    			);
    
    		$this->settings->setSettings( $args );
    	}
    	
    	public function setSections()
    	{
    		$args = array(
    			array(
    				'id' => 'ittcp_ihf_index',
    				'title' => 'Insert Header Footer',
    				'callback' => array( $this->callbacks_ihf, 'ihfSectionManager' ),
    				'page' => 'ittcp_header_footer'
    			)
    		);
    
    		$this->settings->setSections( $args );
    	}
    
    	public function setFields()
    	{
    		$args = array(
    			array(
    				'id' => 'ittcp_header_scripts',
    				'title' => 'Header',
    				'callback' => array( $this->callbacks_ihf, 'textField' ),
    				'page' => 'ittcp_header_footer',
    				'section' => 'ittcp_ihf_index',
    				'args' => array(
    					'option_name' => 'ittcp_plugin_ihf',
    					'label_for' => 'ittcp_header_scripts',
    					'placeholder' => 'header scripts'
    								)
    				),
    				array(
    				'id' => 'ittcp_footer_scripts',
    				'title' => 'Footer',
    				'callback' => array( $this->callbacks_ihf, 'textField' ),
    				'page' => 'ittcp_header_footer',
    				'section' => 'ittcp_ihf_index',
    				'args' => array(
    					'option_name' => 'ittcp_plugin_ihf',
    					'label_for' => 'ittcp_footer_scripts',
    					'placeholder' => 'footer scripts'
    								)
    					)
    				);
    
    		$this->settings->setFields( $args );
    		}	
    	
    
    	function ittIhafDisplayHeader()
    	{
    		$get_header_and_foooter = get_option('ittcp_plugin_ihf');
    		$header_scripts = $get_header_and_foooter['ittcp_header_scripts'];
    
    		print $header_scripts;
    	}
    	
    	function ittIhafDisplayFooter()
    	{
    		$get_header_and_foooter = get_option('ittcp_plugin_ihf');
    		$footer_scripts = $get_header_and_foooter['ittcp_footer_scripts'];
    
    		print $footer_scripts;
    		
    	}
    }

    Wenn ich die Variablen &footer_scripts und & $header_scripts einfach mal ausgeben lasse werden mir die Texte angezeigt, die ich in den Textfeldern eingegeben haben und in der DB gespeichert sind.

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Du verwendest den Hook in der Class falsch.

    add_action( 'wp_head', array( $this, 'ittIhafDisplayHeader' ) );

    vgl. https://developer.wordpress.org/reference/functions/add_action/#comment-355

    Ich hab jetzt alles nochmal auf Null zurück gesetzt.
    Einträge in der DB gelöscht, Plugin gelöscht.
    Add_action geändert.
    Plugin neu installiert.

    Das Plugin lässt sich erstmal aktivieren.
    Nach der Eingabe und speichern von „asdasd“ im Header Textfeld zeigt er mir einmal „asdasd“ direkt im Admin Panel über Dashboard an.
    Auf der Internetseite selbst habe ich im oberen Bereich „asdasd asdasd“ also doppelte Ausgabe.

    Im Quelltext ist kein „asdasd“ zu finden.

    Nach der Deaktivierung und erneuter Aktivierung wieder der Fehler:
    Das Plugin erzeugte 6 Zeichen mit unerwarteter Ausgabe…

    Ich hatte schon diverse Variationen versucht für add_action aber keine hat bislang das gemacht was Sie sollte.

    EDIT:

    gerade nochmal mit dem construct versucht von der Worpress developper Seite…

    	public function __construct() {
            add_action( 'wp_head', array( $this, 'ittIhafDisplayHeader' ) );
    		add_action( 'wp_head', array( $this, 'ittIhafDisplayFooter' ) );
        }

    Das führt zu dem gleichen Ergebnis…

    Irgendwie hab ich anscheinend gerade Bretter vorm Kopf!

    • Diese Antwort wurde geändert vor 3 Monaten, 2 Wochen von ittweak.
Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)