web-dev-qa-db-fra.com

Création permettant à l'utilisateur de sélectionner la page sur laquelle le contenu de mon plugin s'affichera

J'ai une page d'options pour mon plugin, mais je n'arrive pas à comprendre comment créer une option permettant aux administrateurs de sélectionner une page qui affichera le contenu de mes plugins.

Quelqu'un at-il un exemple de la façon dont cela est fait?

EDIT: J'ai créé un plugin et ai un widget pour rechercher le contenu de mon plugin. Cependant, j'ai besoin du widget pour publier sur la page le contenu de mes plugins. Étant donné que le widget se trouve dans la barre latérale, il peut être soumis à partir de n’importe quelle page. Par conséquent, je dois être en mesure de détecter la page sur laquelle le contenu du plug-in est affiché et de se rendre à cette page. 1. détectez le shortcode sur une page donnée et utilisez-le. OR 2. Créez une option à partir d'une page de paramètres pour permettre à l'administrateur de sélectionner la page sur laquelle le contenu du plug-in sera affiché et de supprimer le code abrégé. J'espère que ça clarifie.

J'ai une page de paramètres pour mon plugin, je ne comprends tout simplement pas comment obtenir une liste des pages disponibles et enregistrer/mettre à jour l'option de la table wp_options.

1
Russ

Voici une page d'options rapides qui vous donnera une liste déroulante pour sélectionner une page, en utilisant la fonction get_pages . L'API Paramètres se charge de sauvegarder les options pour vous. Vous pouvez ensuite utiliser get_option pour charger le tableau d'options dans votre modèle et get_post pour charger les données de publication associées à l'ID enregistré dans votre option.

add_action( 'admin_init', 'russ_options_init' );
add_action( 'admin_menu', 'russ_options_page' );

function russ_options_init(){
    register_setting(
        'russ_options_group',
        'russ_options',
        'russ_options_validate'
    );
}

function russ_options_page() {
    add_options_page(
        'Russ Options',
        'Russ Options',
        'manage_options',
        'russ_options',
        'russ_render_options'
    );
}

function russ_render_options() {
    ?>
    <div class="wrap">
        <form method="post" action="options.php">
            <?php
            settings_fields( 'russ_options_group' );
            $options = get_option( 'russ_options' );
            ?>
            <table class="form-table">
                <tr valign="top"><th scope="row">Choose a page</th>
                    <td>
                        <select name="russ_options[page_id]">
                            <?php
                            if( $pages = get_pages() ){
                                foreach( $pages as $page ){
                                    echo '<option value="' . $page->ID . '" ' . selected( $page->ID, $options['page_id'] ) . '>' . $page->post_title . '</option>';
                                }
                            }
                            ?>
                        </select>
                    </td>
                </tr>
            </table>
            <p class="submit">
                <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
            </p>
        </form>
    </div>
    <?php   
}

function russ_options_validate( $input ) {
    // do some validation here if necessary
    return $input;
}
2
Milo