Wie Hinzufügen von Customizer-Einstellung in untergeordnetem Thema

Ich möchte dem Customizer meines Child Theme eine Option hinzufügen, aber ich habe Probleme, es zu implementieren. Ich bin mir ziemlich sicher, dass mein Problem mit dem Namen der Argumente, die ich rufe, verbunden ist, aber ich bin mir nicht sicher, also wenn Sie etwas anderes sehen, zögern Sie bitte nicht, mir zu sagen, was Sie denken.

Was ich vermute, ist falsch:

  1. Ich bin mir nicht sicher, welche Argumente in meiner functions.php den Namen des Kind-Themas (zB child_theme_name / child_theme_name tesseract-child ) und den Titel des übergeordneten Themas (zB parent_theme_name / parent_theme_name ) haben sollten. Normalerweise würde ich annehmen, dass ich immer den Namen des Kindthemas verwenden sollte, aber die Deklaration für die Panels der Datei customizer.php des Parent-Theme enthält den Namen des Parent-Themas ( tesseract_footer_options ), und ich bin unsicher, ob WordPress diesen Namen bei Verwendung von Child-Themes ändert. Beispiel: Das erste Argument in add_section in einem add_section Thema parent_theme_name_footer_options oder child_theme_name_footer_options

  2. Wenn ich den Namen eines Kindthemas verwenden soll, bin ich verwirrt. Wenn ich versuche, die function mit einem Verweis auf den Namen des Kind-Themas zu benennen (zB tesseract-child_options ), der Bindestriche enthält, erhalte ich einen Fehler. Also, ich denke nicht, dass php gerne functionen hat, die mit Bindestrichen benannt sind, und tatsächlich habe ich gelesen, dass dieser php keinen Bindestrich in functionsnamen erlaubt. Ein weiterer Hinweis darauf, dass Bindestriche schlecht sind: Nicht nur die Bindestriche aus dem Namen des Kindthemas verursachen einen Absturz, sondern mein Editor (erhabener Text) hat den Code merkwürdig markiert. Um zu testen, ob Bindestriche das Problem sind, änderte ich den Namen der function in tesseract_child_options , indem ich alle Unterstriche verwendete, aber das scheint mir falsch zu sein, da der Name des Themas tesseract-child mit einem Bindestrich ist, nicht tesseract_child mit einem Unterstrich.

Der Code

Dies ist die Deklaration des Panels in der Datei customizer.php des übergeordneten Themas:

 $wp_customize->add_panel( 'tesseract_footer_options', array( 'priority' => 5, 'capability' => 'edit_theme_options', 'title' => 'Footer Options', //'description' => '' ) ); 

Dies ist der Code, den ich in der function.php Datei meines Child Theme verwende, um zu versuchen, einen Abschnitt zu diesem Optionsfeld hinzuzufügen:

 add_action( 'customize_register' , 'tesseract_child_options' ); function tesseract_child_options( $wp_customize ) { $wp_customize->add_section( 'tesseract_footer_options', array( 'title' => __( 'Reblog Options', 'tesseract' ), 'priority' => 100, 'capability' => 'edit_theme_options', 'description' => __('Change Reblog Options Here.', 'tesseract'), ) ); $wp_customize->add_setting( 'number_of_reblogs', array( 'default' => '3' ) ); $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'reblog_number_control', array( 'label' => __( 'Number of Reblogs', 'tesseract-child' ), 'section' => 'tesseract_footer_options', 'settings' => 'reblog_number', 'type' => 'text', 'priority' => 10, ) )); } 

Jede Hilfe würde sehr geschätzt werden! Vielen Dank!

UPDATE IN BEZUG AUF PROSTIS ANTWORT:

@Prosti hat die Frage beantwortet, aber ich möchte nur klarstellen, was für jemanden falsch war, der versucht, herauszufinden, wie das geht:

  1. Der Name der gesamten function, die von der Aktion customize_register aufgerufen wird, ist beliebig, Sie können sie beliebig benennen, solange Sie keine Bindestriche einfügen. Beachten Sie, dass sich dieser functionsname nicht auf den Namen des übergeordneten Themas oder den Namen des untergeordneten Themas beziehen muss. Um dies zu veranschaulichen, habe ich in meinem Arbeitsbeispiel (siehe unten) den functionsnamen, den ich in meiner anfänglichen Frage verwendet habe, von childtheme_customize_register in childtheme_customize_register . Bitte beachten Sie, dass Sie zwar in dieser function nicht auf den Namen des untergeordneten Themas oder des übergeordneten Themas verweisen müssen, es ist jedoch nichtsdestoweniger eine gute Übung, aber nur aus Gründen der Lesbarkeit, nicht der functionalität.

  2. Der Name des Abschnitts, den Sie erstellen (das erste Argument in der function add_section ), ist beliebig, Sie können ihn beliebig benennen. Das ist ein Tag, den WP für die interne Übergabe der Variablen verwendet. Der Text, den Sie in das zweite Argument von add_section , bestimmt, welcher Text angezeigt wird, wenn Sie zum ersten Mal im Hauptmenü des Customizers landen (das erste Menü, das angezeigt wird). Auch hier wird empfohlen, dass zur Lesbarkeit ein Name verwendet wird, der mit dem Thema verbunden ist.

  3. Innerhalb der functionen add_section und add_control mussten alle zwei Argumentanweisungen (z. B. title , description und label ) genau den Namen des untergeordneten Themas als zweites Argument haben. Wenn der Name dieses Kindthemas Bindestriche hat (wie bei mir, z. B. tesseract-child ), sollte dieses zweite Argument auch Bindestriche enthalten.

  4. Die priority des Abschnitts, der bestimmt wurde, wo (dh wie hoch oder niedrig) der von mir erstellte Abschnitt war, fiel in die Optionsliste. Die Fußzeile war 4. Abschnitt in den Eltern sie und es hatte eine Priorität von 5 . Wenn ich die Priorität innerhalb von add_section , kam die Option über die footer Optionsschaltfläche, wenn ich sie auf 6 setze, fiel sie unter diese.

Beispiel für einen Arbeitscode

 
 add_action ('customize_register', 'childtheme_customize_register');  // Das zweite Argument ist beliebig, kann aber keine Bindestriche enthalten, da php sie nicht in functionsnamen erlaubt.



 function childtheme_customize_register ($ wp_customize) {

 $ wp_customize-> add_section ( 
     "tesseract_reblog_options", 
     Array (
         'title' => __ ('Reblog Optionen', 'tesseract-child'), // 2. arg stimmt mit dem Namen des untergeordneten Themas überein 
         'priority' => 6, // setze den Bereich unterhalb der Footer-Optionen in die Liste
         'Fähigkeit' => 'edit_theme_options',
         'description' => __ ('Change Reblog Options Here.', 'tesseract-child'), // 2. arg stimmt mit dem Namen des Child-Theme überein 
     ) 
 );


 $ wp_customize-> add_setting ('Anzahl_von_reblogs',
     Array (
         'Standard' => '3'
     )
 );  

 $ wp_customize-> add_control ('setting_id', Array (
   'label' => __ ('Anzahl der Reblogs', 'tesseract-child'), // 2. arg stimmt mit dem Namen des untergeordneten Themas überein
     'Abschnitt' => 'tesseract_reblog_options',
     'Einstellungen' => 'Anzahl_der_Reflogs',
     'typ' => 'text',
     "Priorität" => 6
 ));
 }

Solutions Collecting From Web of "Wie Hinzufügen von Customizer-Einstellung in untergeordnetem Thema"

OK, schau dir das Thema Entwicklerhandbuch an.

 $wp_customize->add_control( 'reblog_number_control', array( 'label' => __( 'Number of Reblogs', 'tesseract-child' ), 'section' => 'tesseract_footer_options', 'settings' => 'number_of_reblogs', 'type' => 'text', 'priority' => 10 ) ); 

Da du im Child-Thema bist

 'title' => __( 'Reblog Options', 'tesseract' ), 

soll sein

 'title' => __( 'Reblog Options', 'tesseract-child' ), 

Mit anderen Worten, Ihre Einstellungen, Steuerelemente und Abschnittsnamen müssen in add_control , add_section , add_setting .