自定义插件:尝试在前端显示保存的数据

时间:2016-01-23 作者:Nate

我正在开发我的第一个插件,我制作了一个很好的设置页面,可以保存和工作。

但我已经将其拆分为几个文件,现在我无法确定字段是否已选中。。我也尝试过申报global 变量,但我无法使其工作:\\

Plugin

以下是我的插件的启动方式:

global $if_autoload;

add_action(\'init\', \'additional_menus_admin\');

function additional_menus_admin() {
    require_once(dirname(__FILE__) . \'/admin.php\');
    require_once(dirname(__FILE__) . \'/hooks.php\');
}

hooks.php

我想看看"autoload" 复选框已选中:

add_action(\'wp_head\',\'hook_additional_menu\', 20);

function hook_additional_menu() {
    global $if_autoload;

    echo \'<test>\'.$if_autoload.\'</test>\';

}

admin.php

我还尝试使用get_option 功能不变。所有字段都保存在我的admin.php 文件,我试着global 也有变量:

function menu_autoload_callback() {
    $if_autoload = get_option( \'autoload-or-shortcode\' );
    echo \'<input type="checkbox" name="autoload-or-shortcode" value="1"\'. checked( 1, get_option( \'autoload-or-shortcode\' ), false ) .\' /><br />\';
}

2 个回复
SO网友:jgraup

省得自己头疼,去上课吧。静态变量一旦加载,就可以像全局变量一样进行访问。在尝试使用之前,请确保该类存在!

if ( ! class_exists( \'WPSE_20150123_Plugin\' ) ) {

    class WPSE_20150123_Plugin {

        // our variable that will be set and read back later
        public static $if_autoload = \'I\\\'m Not Sure???\';

        // \'init\' hook
        public static function init() {

            // show value
            echo static::$if_autoload; // I\'m quite sure 
        }
    }
}

// set the static value
WPSE_20150123_Plugin::$if_autoload = \'I\\\'m quite sure!\';

// hook init to static function
add_action( \'init\', \'WPSE_20150123_Plugin::init\' );
<小时>

admin.php

看着你的checked() 函数,我不太确定您是否正确使用了它。这是他们给出的示例,您的args看起来好像放错了位置。

<?php

// Get an array of options from the database.
$options = get_option( \'slug_option\' );

// Get the value of this option.
$checked = $options[\'self-destruct\'];

// The value to compare with (the value of the checkbox below).
$current = 1; 

// True by default, just here to make things clear.
$echo = true;

?>
<input name="slug-option[self-destruct]" value="1" <?php checked( $checked, $current, $echo ); ?>/>
您的功能可能会更好,因为:

function menu_autoload_callback() {
    $if_autoload = get_option( \'autoload-or-shortcode\' );
    echo \'<input type="checkbox" name="autoload-or-shortcode" value="1" \' . checked( $if_autoload , 1, false ) . \' /><br />\';
}
<小时>

hooks.php

另一件事,您似乎回显了无效的html:

echo \'<test>\'.$if_autoload.\'</test>\';
应该是

echo \'<h1 class="test" >If Autoload: \' . $if_autoload . \'</h1>\';
看看也没什么坏处http://wppb.me.

SO网友:Nate

最后我用了这个-

// Define global variables
    global  $am_globals;
            $am_globals = array(
                \'if_autoload\' => get_option( \'autoload-or-shortcode\' ),
            );
还有这个-

if( ! $if_autoload = $GLOBALS[\'am_globals\'][\'if_autoload\'] ) {