Warnung: Ungültiger Zeichenfolgen-Offset auf der Themenoptionen-Seite

Im Erstellen von benutzerdefinierten Design-Optionen und ich bekomme diesen PHPFehler: Warnung: Illegale String-Offset in … in Zeile 75

// adding the page to menu add_menu_page('Theme Options', 'Theme Options', 'manage_options', 'rm-options', 'rm_display_options_page'); // form to display options 
// adding a section add_settings_section('rm_general_section', 'General options', 'rm_general_section_callback', 'rm-options'); // register the options register_setting( 'rm_theme_options', 'rm_theme_options', 'esc_attr' ); // register a field $some_option_args = array('type' => 'text', 'id' => 'some_option_name', 'name' => 'some_option_name', 'desc' => 'Description'); add_settings_field('some_option_name', 'Some Option', 'pu_display_setting', 'rm-options', 'rm_general_section', $some_option_args); // finally a function to display the fields function pu_display_setting($args){ extract( $args ); $options = get_option( 'rm_theme_options' ); switch ( $type ) { case 'text': //$options[$id] = stripslashes($options[$id]); //$options[$id] = esc_attr( $options[$id]); // this is line 75 where im getting the warning echo ""; echo ($desc != '') ? "
$desc" : ""; break; } }

Wenn ich jetzt versuche, die Option zu speichern, ist der Fehler immer noch vorhanden und der Wert der Eingabe ist “A”. Wenn ich die database überprüfe, ist der tatsächliche Wert einfach “Array”. Was ist mit der Linie 75 falsch? In dem Tutorial, in dem ich die function zur Anzeigeeinstellung hatte, gab es auch zwei weitere Zeilen, die die Slahes und esc_attr streiften.

BEARBEITEN:

Das ist jetzt, wie mein Code wirklich ist, ich verwende die function, um die Seite anzuzeigen, aber ich wollte nur nicht jedes Stück Code hier setzen, also ist es nicht ein großes Durcheinander. So sieht es komplett aus:

 function rm_display_options_page() { ?> 

Theme options description
<?php }

Und die Linie 75 ist:

 echo ""; 

Solutions Collecting From Web of "Warnung: Ungültiger Zeichenfolgen-Offset auf der Themenoptionen-Seite"

Der Code, den du gepostet hast, hat einen großen Makel *: Er mischt HTML und PHP, ohne sie richtig zu unterscheiden. Dieser Code-Chunk hat einen PHP-functionsaufruf, gefolgt von einer HTML-Zeichenkette, aber da nichts sagt, dass die Datei als HTML behandelt werden soll, sagt der Parser: “Hey,

ist nichts, was ich erkenne. Ich bin raus hier! "

* Dass fast jeder irgendwann bei der Verwendung von PHP und HTML betroffen ist. :)

Der beleidigende Code hier ist

 // adding the page to menu add_menu_page('Theme Options', 'Theme Options', 'manage_options', 'rm-options', 'rm_display_options_page'); // form to display options 
< ?php settings_fields('rm_theme_options'); // options name do_settings_sections('rm-options'); // page submit_button(); ?>

Sie haben hier eine Reihe von Optionen, zum Beispiel PHP zu sagen, dass der HTML-Code so aussehen soll:

 // adding the page to menu add_menu_page('Theme Options', 'Theme Options', 'manage_options', 'rm-options', 'rm_display_options_page'); // form to display options echo '
'; settings_fields('rm_theme_options'); // options name do_settings_sections('rm-options'); // page submit_button(); echo '
';

Eine weitere Möglichkeit besteht darin, die PHP-Teile auszugrenzen, damit der HTML-Code nicht von PHP analysiert wird:

 // adding the page to menu add_menu_page('Theme Options', 'Theme Options', 'manage_options', 'rm-options', 'rm_display_options_page'); // form to display options ?> 
< ?php settings_fields('rm_theme_options'); // options name do_settings_sections('rm-options'); // page submit_button(); ?>
< ?php ...

* Aktualisierung *

Es gibt ein bisschen String-Verkettung, mit der ich meine Augen nicht ganz umschließen kann, also habe ich das hier geändert, um es leichter für mich zu machen. Es kann auch helfen, Fehler zu beheben. Es empfiehlt sich auch, Attribute in Ihrem HTML-Code zu umgehen. Daher habe ich diese Zeile so aktualisiert, dass sie diese functionen enthält.

 echo "'; 

Dies scheint nur ein PHP-Syntaxproblem zu sein:

 echo ""; 

Das erste Problem ist das Mischen von PHP-Variablen und String-Verkettung. Ich nehme an, dass Sie die Zeichenfolge 'rm_theme_options[$id]' benötigen, wobei $id durch seinen Wert ersetzt wird? Wenn dies der Fall ist, sollte Ihre String-Verkettung folgendes widerspiegeln:

 echo ""; 

Es ist subjektiv, aber ich empfehle doppelte Anführungszeichen für HTML und einfache Anführungszeichen für PHP-Zeichenfolgen. Es ist einfach viel einfacher zu folgen:

 echo ''; 

Der Hauptvorteil des Einschließens von PHP-Zeichenfolgen in doppelte Anführungszeichen besteht darin, dass Sie Variablen direkt in die Zeichenfolge übergeben können. aber in komplexen Strings, die doppelte und einfache Anführungszeichen mischen, kann das (wie du herausgefunden hast) sehr kompliziert werden.