2015-03-31 27 views
0

我不知道如何制定的問題,所以我開始說,在我的插件文件夾style.php我有2個文件:PHP - 發送選項使用get_option

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似乎它變成格式化爲普通文本。

有人能向我解釋,爲什麼出現這種情況?我如何將選項傳遞給我的樣式文件?

+0

如果該值沒有被設置[get_option](https://codex.wordpress.org/Function_Reference/get_option)返回false。您可以添加一個默認值,如'get_option('my_adminbar_color','#ABCDEF')'。 – d79 2015-03-31 23:05:17

+0

但我已將其設置在索引頁面add_option('my_adminbar_color','紅色');我可以看到正在輸出的紅色值,但樣式停止工作。一旦我刪除了get_option函數,樣式就再次起作用。 – SNos 2015-03-31 23:09:58

+0

哦好吧,你直接調用的wp-admin.php的文件,所以WordPress是不加載的文件中,然後'get_option'沒有定義。我會嘗試並提供解決方案。 – d79 2015-03-31 23:16:04

回答

0

你直接調用的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工作。

+0

謝謝,這是工作。現在我有一個問題,當我提出我的期權價值得到更新,它的工作原理不過,我必須提交兩次,要呈現的設置。請參閱答案中的編輯。 – SNos 2015-04-01 00:21:49

+0

我認爲我們不應該用另一個問題來編輯這個問題。不過,我認爲問題在於樣式已經被加載後,你正在設置新的顏色。您應該在調用函數之前或在my_admin_theme_style函數內調用'update_option'。 – d79 2015-04-01 00:52:12

+0

好的非常感謝您的幫助,併爲編輯感到抱歉。我會盡量按照你的意見 – SNos 2015-04-01 01:01:08

0

我不是很熟悉的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%的自信,但這是我最好的猜測。

+0

我已經嘗試過這種方法,但是樣式僅在插件頁面上呈現,而不是在所有儀表板中呈現。謝謝你的好意的快速響應 – SNos 2015-03-31 22:48:14