Título do site e slogan na página Opções de tema

4

Estou usando o tema da estrutura de opções para criar uma página de opções . O (s) usuário (s) que estou construindo para isso gostaria de poder editar algumas configurações diretamente desta página, incluindo: o Título do Site e o Tagline .

Conceito:

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 uma maneira de fazer isso (adicione seus próprios Título do Site e Taglines ) dentro de um campo de texto, por exemplo, clique no botão Opções de Salvar para gerá-lo o front-end do site e exibir uma versão atualizada nas configurações da API do WP > Página do submenu Configurações gerais?

    
por user1752759 25.12.2012 / 18:21

1 resposta

3

O framework oferece um filtro para validar valores de entrada dentro da função optionsframework_validate .
Apenas para referência, aqui está a parte relevante do arquivo wp-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 */

Então, considerando que temos as seguintes opções no arquivo wp-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');

E em wp-content/themes/your-theme/functions.php , filtramos o tipo de entrada text ( of_sanitize_ + text ) e se ele corresponder aos nossos IDs definidos ( blogname e blogdescription , assim como nas Configurações gerais), ele atualizará as opções do site que possuem o mesmo ID.

Por favor, note que isso não funciona ao contrário: as alterações feitas em Settings -> General não serão refletidas na página de opções do tema ...

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;
}
    
por brasofilo 25.12.2012 / 20:08