WordPress

include – get_option() nie zwraca oczekiwanej wartości z wtyczki

  • 18 grudnia, 2018
  • 3 min read
include – get_option() nie zwraca oczekiwanej wartości z wtyczki


Próbuję stworzyć swoją pierwszą wtyczkę i jak dotąd wszystko było w porządku, z wyjątkiem jednej małej irytującej rzeczy. Mam skonfigurowane pola i aktualizuję dane i wygląda dobrze w mojej bazie danych:

mfwp_settings | a:1:{i:test;s:3:"response";}

Ale kiedy chcę powtórzyć wartość „test” w moim panelu administracyjnym, wraca pusta lub NULL. Echo dobrze odbija się na stronie frontowej, ale w ramach wtyczki nie pobiera danych przy użyciu następujących elementów:

$mfwp_opt = get_option('mfwp_settings')['test'];

Ponownie, powyższe odpala dobrze w normalnym php na froncie. Mogę więc tylko założyć, że problem dotyczy brakującej „ścieżki” i/lub „zawiera” w głównym PHP wtyczki.

Więc… czy jest jakaś specjalna ścieżka, którą muszę umieścić w głównej wtyczce PHP?

Wpisałem ABPATH na wszelki wypadek, ale bez powodzenia:

if ( ! defined( 'ABSPATH' ) ) {
exit;
}

Pomyślałem, że mógłbym skopiować i dostosować funkcję „get_option” i użyć jej we własnej wtyczce, ale wydaje się to niepotrzebne. Dlatego każda pomoc byłaby mile widziana!

Edytować

Aby być bardziej przejrzystym, poniżej umieściłem php, nad którym pracuję. Wszystko w php działa dobrze Z WYJĄTKIEM, że nie wywoła metody get_option lub pobrać dane przez $wpdb.

<?php
// Initiate Global(s)
global $wpdb;
//TRIED to call normally via get_option, but it wouldn't fire
$test = get_option( 'mfwp_settings' );
//TRIED to call via SQL, but comes back as NULL
$get_settings = $wpdb->get_results ( "
        SELECT * 
        FROM $wpdb->wp_options
        WHERE option_name = mfwp_settings
        LIMIT 1
        " );
$field1 = get_option( mfwp_settings );
// Creating Admin Menu option
add_action('admin_menu', function () {
    add_options_page(
            //CHANGE
            'My First WordPress Plugin', //title browser
            //CHANGE
            'MFWP', //menu text
            //KEEP
            'manage_options', //require capability **KEEP AS manage_options**
            //CHANGE
            'mfwp_admin', //reference slug
            //CHANGE
            'mfwp_options_page' //callback to menu body
            );
}
);
// Call Back & create body - CHANGE prefix
function mfwp_options_page() {
    //ob_start(); ?>
    <div class="wrap">
        <h2>My First WordPress Plugin Options</h2>
        <form method="post" action="options.php">
            <?php
                settings_fields( 'mfwp_settings_group' );
            ?>
            <h4><?php _e('Placeholder for Plugin Fields', 'mfwp_domain'); ?></h4>
            <p><?php echo $field1 . ' tester<br />'; echo var_dump($get_settings);?>
                <label class="description" for="mfwp_settings"><?php _e('This is a label description', 'mfwp_domain'); ?></label>
                <input class="regular-text" id="mfwp_settings" name="mfwp_settings" type="" value="<?php echo $test; ?>"> 
            </p>
            <p class="submit">
                <input type="submit" class="button-primary" value="<?php _e('Save Option', 'mfwp_domain'); ?>">
            </p>
        </form>
    </div>
    <?php
    //echo ob_get_clean();
}
function mfwp_register_settings() {
        $args = array(
            'type' => 'string', 
            'sanitize_callback' => 'sanitize_text_field', //Sanatizes data
            'default' => NULL,
            );
    register_setting('mfwp_settings_group', 'mfwp_settings', $args);
}
add_action('admin_init', 'mfwp_register_settings');


Źródło

Warto przeczytać!  Witamy WP101 w rodzinie produktów WPBeginner