PHP - 使用 get_option 将选项发送给 style.php
PHP - Send option to style.php using get_option
我不确定如何提出问题,所以我开始说在我的插件文件夹中我有 2 个文件:
1 - "index.php"
add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );
function my_admin_setting() {
include('includes/my_admin.php');
include('css/wp-admin.php');
}
function custom_admin_actions() {
add_menu_page("Customise-Admin", "Custom-Admin", 1, "Custom_Admin", "my_admin_setting");
add_submenu_page('Custom_Admin', 'About', 'About', 1, 'info', "my_admin_info");
}
function my_admin_theme_style() {
wp_register_style('my-admin-theme', plugins_url('css/wp-admin.php', __FILE__));
wp_enqueue_style('my-admin-theme');
}
add_action('admin_enqueue_scripts', 'my_admin_theme_style');
add_action('login_enqueue_scripts', 'my_admin_theme_style');
add_action('admin_menu', 'custom_admin_actions');
add_option( 'my_adminbar_color', 'red' );
2 - wp_admin.php(样式)
<?php header('Content-type: text/css');
?>
<?php
$blue = '#0e70d1';
$dkgray = '#333';
$dkgreen = '#008400';
?>
<?php $myplugin_color = get_option( 'my_adminbar_color' ); ?>
#wpadminbar {
background-color: <?php echo $myplugin_color;?> !important;
}
这里的问题是我试图将选项传递给 php 样式。但是,当我不插入 "get_option" 函数时,我的自定义样式是可见的,一旦我传递该值,样式就不再呈现。
我可以看到选项被传递到样式文件,因为 css 代码打印在插件页面中,而不是 运行 代码,因为 CSS 似乎它变为普通文本格式。
有人可以向我解释为什么会这样吗?以及如何将选项传递给我的样式文件?
我不是很熟悉 wordpress 的细节,但是如果你想申请
#wpadminbar {
background-color: <?php echo $myplugin_color;?> !important;
}
作为样式,您需要将其包装在 <style>
标签中。所以会是
<?php header('Content-type: text/css');
?>
<?php
$blue = '#0e70d1';
$dkgray = '#333';
$dkgreen = '#008400';
?>
<?php $myplugin_color = get_option( 'my_adminbar_color' ); ?>
<style>
#wpadminbar {
background-color: <?php echo $myplugin_color;?> !important;
}
</style>
对此不是 100% 有信心,但这是我最好的猜测。
您直接调用了 wp-admin.php 文件,因此该文件中未加载 Wordpress,并且 get_option
未定义。
这可能是一个解决方案(不使用像 wp-admin.php 这样的外部文件):
function my_admin_theme_style () {
$blue = '#0e70d1';
$dkgray = '#333';
$dkgreen = '#008400';
$myplugin_color = get_option( 'my_adminbar_color', 'red' );
return "
body {
background-color: $myplugin_color !important;
}
";
}
function add_my_style_to_admin () {
wp_add_inline_style( 'wp-admin', my_admin_theme_style() );
}
function add_my_style_to_login () {
echo '<style type="text/css">';
echo my_admin_theme_style();
echo '</style>';
}
add_action('admin_enqueue_scripts', 'add_my_style_to_admin');
add_action('login_enqueue_scripts', 'add_my_style_to_login');
我必须制作 2 个函数,因为 admin_enqueue_scripts
和 login_enqueue_scripts
的工作方式不同。
我不确定如何提出问题,所以我开始说在我的插件文件夹中我有 2 个文件:
1 - "index.php"
add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );
function my_admin_setting() {
include('includes/my_admin.php');
include('css/wp-admin.php');
}
function custom_admin_actions() {
add_menu_page("Customise-Admin", "Custom-Admin", 1, "Custom_Admin", "my_admin_setting");
add_submenu_page('Custom_Admin', 'About', 'About', 1, 'info', "my_admin_info");
}
function my_admin_theme_style() {
wp_register_style('my-admin-theme', plugins_url('css/wp-admin.php', __FILE__));
wp_enqueue_style('my-admin-theme');
}
add_action('admin_enqueue_scripts', 'my_admin_theme_style');
add_action('login_enqueue_scripts', 'my_admin_theme_style');
add_action('admin_menu', 'custom_admin_actions');
add_option( 'my_adminbar_color', 'red' );
2 - wp_admin.php(样式)
<?php header('Content-type: text/css');
?>
<?php
$blue = '#0e70d1';
$dkgray = '#333';
$dkgreen = '#008400';
?>
<?php $myplugin_color = get_option( 'my_adminbar_color' ); ?>
#wpadminbar {
background-color: <?php echo $myplugin_color;?> !important;
}
这里的问题是我试图将选项传递给 php 样式。但是,当我不插入 "get_option" 函数时,我的自定义样式是可见的,一旦我传递该值,样式就不再呈现。
我可以看到选项被传递到样式文件,因为 css 代码打印在插件页面中,而不是 运行 代码,因为 CSS 似乎它变为普通文本格式。
有人可以向我解释为什么会这样吗?以及如何将选项传递给我的样式文件?
我不是很熟悉 wordpress 的细节,但是如果你想申请
#wpadminbar {
background-color: <?php echo $myplugin_color;?> !important;
}
作为样式,您需要将其包装在 <style>
标签中。所以会是
<?php header('Content-type: text/css');
?>
<?php
$blue = '#0e70d1';
$dkgray = '#333';
$dkgreen = '#008400';
?>
<?php $myplugin_color = get_option( 'my_adminbar_color' ); ?>
<style>
#wpadminbar {
background-color: <?php echo $myplugin_color;?> !important;
}
</style>
对此不是 100% 有信心,但这是我最好的猜测。
您直接调用了 wp-admin.php 文件,因此该文件中未加载 Wordpress,并且 get_option
未定义。
这可能是一个解决方案(不使用像 wp-admin.php 这样的外部文件):
function my_admin_theme_style () {
$blue = '#0e70d1';
$dkgray = '#333';
$dkgreen = '#008400';
$myplugin_color = get_option( 'my_adminbar_color', 'red' );
return "
body {
background-color: $myplugin_color !important;
}
";
}
function add_my_style_to_admin () {
wp_add_inline_style( 'wp-admin', my_admin_theme_style() );
}
function add_my_style_to_login () {
echo '<style type="text/css">';
echo my_admin_theme_style();
echo '</style>';
}
add_action('admin_enqueue_scripts', 'add_my_style_to_admin');
add_action('login_enqueue_scripts', 'add_my_style_to_login');
我必须制作 2 个函数,因为 admin_enqueue_scripts
和 login_enqueue_scripts
的工作方式不同。