J'utilise le thème Options Framework pour créer une page d'options. Le ou les utilisateurs pour lesquels je construis souhaite pouvoir modifier quelques paramètres directement à partir de cette page, notamment: Titre du site et Tagline.
Concept:
Options.php:
$options[] = array(
'name' => __('Site Title', 'options_framework_theme'),
'desc' => __('The name of your site.', 'options_framework_theme'),
'id' => 'title',
'std' => 'PHP CODE FOR SITE TITLE HERE ...',
'class' => 'medium',
'type' => 'text');
Existe-t-il un moyen de le faire (ajouter leurs propres Titre du site et Taglines) dans un champ de texte, par exemple, cliquez sur le bouton Enregistrer les options pour le générer au début du site et l'afficher une version mise à jour dans la page de sous-menu WP _ Paramètres d'API> Paramètres généraux?
La structure offre un filtre pour valider les valeurs d’entrée dans la fonctionoptionsframework_validate
.
Juste pour référence, voici la partie pertinente du fichierwp-content/themes/your-theme/inc/options-framework.php
:
/**
* Validate Options.
*
* This runs after the submit/reset button has been clicked and
* validates the inputs.
*/
function optionsframework_validate( $input ) {
/* code */
$clean[$id] = apply_filters( 'of_sanitize_' . $option['type'], $input[$id], $option );
/* code */
Donc, étant donné que nous avons les options suivantes dans le fichierwp-content/themes/your-theme/options.php
:
$options[] = array(
'name' => __('Input Text Mini', 'options_framework_theme'),
'desc' => __('A mini text input field.', 'options_framework_theme'),
'id' => 'blogname',
'std' => 'Default',
'class' => 'mini',
'type' => 'text');
$options[] = array(
'name' => __('Input Text', 'options_framework_theme'),
'desc' => __('A text input field.', 'options_framework_theme'),
'id' => 'blogdescription',
'std' => 'Default Value',
'type' => 'text');
Et danswp-content/themes/your-theme/functions.php
, nous filtrons le type d’entréetext
(of_sanitize_
+ text
) et si elle correspond à nos identifiants définis (blogname
et blogdescription
, comme dans Paramètres généraux), il mettra à jour les options de site ayant le même identifiant.
Veuillez noter que cela ne fonctionne pas dans l'autre sens: les modifications apportées dans Settings -> General
ne seront pas reflétées dans la page des options de thème ...
add_filter( 'of_sanitize_text', 'wpse_77233_framework_to_settings', 10, 2 );
function wpse_77233_framework_to_settings( $input, $option )
{
if( 'blogname' == $option['id'] )
update_option( 'blogname', sanitize_text_field( $input ) );
if( 'blogdescription' == $option['id'] )
update_option( 'blogdescription', sanitize_text_field( $input ) );
return $input;
}