web-dev-qa-db-fra.com

Extension de la page d'options du plugin

J'avais récemment installé le plugin Post Views Counter, qui créait une page d'options dans le menu Paramètres de Wordpress. J'aimerais maintenant étendre les fonctionnalités du plugin en ajoutant quelques options supplémentaires. Cela se fera par un autre plugin qui a été créé par moi. L'objectif est d'ajouter mes propres options directement dans la page où se trouvent les autres options. Je ne veux pas créer de menu de niveau supérieur, de sous-menu sous Paramètres ou quoi que ce soit d'autre. Comment puis je faire ça?

Merci Riccardo

1
R99Photography

Si un plug-in tiers (le plug-in que vous souhaitez étendre) utilise l'API Settings, vous pouvez ajouter un nouveau champ de paramètre si vous utilisez maintenant la page d'options et le groupe d'options défini par le plug-in tiers. Utilisez simplement les Paramètres APT aussi:

  • Tout d'abord, avec add_setting_field() , vous pouvez ajouter un nouveau champ à toute section de paramètres définie par le troisième plugin.
  • Deuxièmement, avec register_setting() , vous pouvez enregistrer un nouveau paramètre dans le groupe d'options défini par le plug-in.

Un exemple très rapide:

add_action( 'admin_init', 'cyb_add_settings_field_to_plugin' );
function cyb_add_settings_field_to_plugin() {

    add_settings_field(
        'some_id',
        'Some title',
        'cyb_field_callback',
        'plugin-settins-page', // Settings page defined by the third party plugin
        'plugin-settings-section', // Section defined by the third party plugin
        array()
    );

    register_setting(
        'option-group', // Options group defined by third party plugin
        'my-option-name', // Custom option name
        'cyb_sanitize_callback' // Sanitize
    );

}

function cyb_field_callback() {
    $value = get_option( 'my-option-name' );
    ?>
    <input type="text" id="some_id" name="my-option-name" value="<?php echo esc_attr( $value ); ?>" />
    <?php
}

function cyb_sanitize_callback( $inputs ) {
    // Do sanitization of the the inputs
    return $inputs;
}

Si vous le souhaitez, vous pouvez également ajouter de nouvelles sections:

add_action( 'admin_init', 'cyb_add_settings_field_to_plugin' );
function cyb_add_settings_field_to_plugin() {

    add_settings_section(
        'new-settings-section',
        'Settings Section Title',
        'cyb_print_section_info', // Callback
        'plugin-settins-page' // Settings page defined by the third party plugin
    );  
    add_settings_field(
        'some_id',
        'Some title',
        'cyb_field_callback',
        'plugin-settins-page', // Settings page defined by the third party plugin
        'new-settings-section', // My custom section defined above
        array()
    );
    register_setting(
        'option-group', // Options group defined by third party plugin
        'my-option-name', // Option name
        'cyb_sanitize_callback' // Sanitize
    );
}

function cyb_print_section_info() {
    echo 'Section info';
}

function cyb_field_callback() {
    $value = get_option( 'my-option-name' );
    ?>
    <input type="text" id="some_id" name="my-option-name" value="<?php echo esc_attr( $value ); ?>" />
    <?php
}

function cyb_sanitize_callback( $inputs ) {
    // Do sanitization of the the inputs
    return $inputs;
}
0
cybmeta