Wie fügt man Optionstypen neue Optionstypen hinzu?

Ich verwende den Optionsbaum im Themenmodus und im Unterthememodus und versuche, neue Optionstypen hinzuzufügen. Die neuen Optionstypen basieren nicht auf dem Post-select-Optionstyp, sondern nur auf Posts einer bestimmten Kategorie.

Ich habe eine neue Datei erstellt und sie zu dem Array von Dateien hinzugefügt, das in Zeile 178 von ot-loader.php beginnt. In der neuen Datei habe ich den Optionstyp post-select ausgeschnitten und eingefügt, der in Zeile 905 von /includes/ot-functions-options-type.php beginnt. Sie können diese neue Datei hier sehen .

In meinem Post-Auswahl-Optionstyp habe ich einen eindeutigen Slug an den functionsnamen angehängt. Ich habe diesen Slug auch in die CSS-class .type-post-select für das äußere Umbruch-Wrapper-Format eingefügt. Im Post-Abfrage-Post-Array habe ich einen Kategorie-Parameter hinzugefügt.

Dann fügte ich meinen neuen Post-Select-Optionstyp zu meinen Designoptionen hinzu und hoffte, dass nur Posts in der von mir festgelegten Kategorie angezeigt würden. Es zeigte die Beiträge aus allen Kategorien. Interessanterweise wurde die Option in .type-post-select eingebettet. Ich habe auch eine regelmäßige post-select erstellt, die nicht die modifizierte CSS hatte.

Als Experiment habe ich es müde gemacht, auf die gleiche Weise den Parameter category zur ursprünglichen Post-select-Option hinzuzufügen, und es funktionierte genau so, wie ich es erwartet hatte – es wurden nur Posts aus dieser Kategorie angezeigt. Leider muss ich 6 neue Post-Selects erstellen, die jeweils Posts aus einer anderen Kategorie zeigen.

Offensichtlich vermisse ich einen Schritt, aber für das Leben von mir kann ich es nicht finden. Ich suchte nach einem anderen Ort, an dem Optionstypen registriert werden müssen oder etwas, aber ich konnte es nicht finden …

Solutions Collecting From Web of "Wie fügt man Optionstypen neue Optionstypen hinzu?"

Was Sie tun möchten, kann erreicht werden, ohne die coredateien in OptionTree zu bearbeiten. Fügen Sie Ihren themen functions.php und dem folgenden Code Ihre benutzerdefinierten functionen hinzu.

 /** * Filter to add custom option types. * * @param array An array of option types. * @return array */ function add_custom_option_types( $types ) { $types['post_select_a_1'] = 'Post Select option type. (_a_1)'; $types['post_select_a_2'] = 'Post Select option type. (_a_2)'; $types['post_select_a_3'] = 'Post Select option type. (_a_3)'; $types['post_select_a_4'] = 'Post Select option type. (_a_4)'; $types['post_select_a_5'] = 'Post Select option type. (_a_5)'; $types['post_select_a_6'] = 'Post Select option type. (_a_6)'; return $types; } add_filter( 'ot_option_types_array', 'add_custom_option_types' ); 

Dadurch werden Ihre functionen automatisch in OptionTree geladen und Sie müssen keine der coredateien bearbeiten. Wenn Sie neue Optionen hinzufügen, gibt es zwei Anforderungen. Eins, alle functionen müssen mit ot_type_ vorangestellt ot_type_ . ot_type_ : ot_type_ Sie dem Array von Optionen hinzufügen, müssen die neuen Array-Schlüssel dem functionsnamen minus ot_type_ . Sie können entweder - oder _ beim Erstellen des Schlüssels verwenden. Wenn Sie also eine benutzerdefinierte function namens ot_type_super_awesome Sie sie zum gefilterten Array hinzufügen:

 $types['super_awesome'] = 'Super Awesome'; 

oder

 $types['super-awesome'] = 'Super Awesome'; 

Ich hoffe, das macht jede Verwirrung zunichte. ot_type_post_select_a_5 bemerkt gibt es zwei ot_type_post_select_a_5 in der Datei, die Sie erstellt haben, und ich ot_type_post_select_a_5 an, dass die letzte ot_type_post_select_a_6 sein ot_type_post_select_a_6 . Prost!