2016-02-18 183 views
4

我剛剛進入WordPress的插件開發。現在我有一個函數,我將其作爲過濾器傳遞給具有特定變量的'tiny_mce_before_init',以更改按鈕,添加自定義樣式和其他類似的東西。Wordpress tinyMCE自定義插件

我正在建立一個選項頁面,我想控制傳遞給tinyMCE函數的變量,這樣用戶可以選擇要顯示的按鈕以及將自定義樣式表添加到編輯器。

此時,我編輯微型mce的函數效果很好!選項頁面也保存數據,複選框和其他我需要的東西。

我唯一的問題是我不理解如何將存儲在「options.php」中的變量傳遞給當前的tinyMCE函數。這是我的functions.php文件中的當前功能:

function my_format_TinyMCE($in) { 
    //styles for the editor to provide better visual representation. 
    $in['content_css'] = get_template_directory_uri() . "/build/styles/tiny-mce-editor.css"; 
    $in['block_formats'] = "Paragraph=p; Heading 1=h1; Heading 2=h2"; 
    $in['toolbar1'] = 'formatselect,bold,italic,underline,superscript,bullist,numlist,alignleft,aligncenter,alignright,link,unlink,spellchecker'; 
    $in['toolbar2'] = ''; 
    $in['toolbar3'] = ''; 
    $in['toolbar4'] = ''; 
    return $in; 
} 
add_filter('tiny_mce_before_init', 'my_format_TinyMCE'); 

我不想加入我的選項頁面中的所有代碼進行卷積的帖子,但我可能需要就如何在傳遞方式的一些方向變量作爲$ in []中的值。如前所述,變量將在選項頁面中創建並保存,更新微小的mce函數。

我研究了很多,我找不到任何關於此的直接信息 - 像往常一樣,我不是在尋找某人來執行我的代碼,而是可能會將我推向正確的方向。

謝謝!

編輯新建CODE

add_action('admin_menu', 'my_cool_plugin_create_menu'); 

function my_cool_plugin_create_menu() { 
    add_menu_page('My Cool Plugin Settings', 'Cool Settings', 'administrator', __FILE__, 'my_cool_plugin_settings_page' , plugins_url('/images/icon.png', __FILE__)); 
    add_action('admin_init', 'register_my_cool_plugin_settings'); 
} 

function register_my_cool_plugin_settings() { 
    //register our settings 
    register_setting('my-cool-plugin-settings-group', 'new_option_name'); 
} 

function my_cool_plugin_settings_page() { 
    ?> 
    <div class="wrap"> 
     <h2>Your Plugin Name</h2> 
     <form method="post" action="options.php"> 
      <?php settings_fields('my-cool-plugin-settings-group'); ?> 
      <?php do_settings_sections('my-cool-plugin-settings-group'); ?> 
      <table class="form-table"> 
       <tr valign="top"> 
        <th scope="row">New Option Name</th> 
        <td><input type="text" name="new_option_name" value="<?php echo esc_attr(get_option('new_option_name')); ?>" /></td> 
       </tr> 

      <?php submit_button(); ?> 
     </form> 
    </div> 
<?php } 

function my_format_TinyMCE($in) { 

    $toolbar = get_option('new_option_name'); 

    //styles for the editor to provide better visual representation. 
    $in['content_css'] = get_template_directory_uri() . "/build/styles/tiny-mce-editor.css"; 
    $in['block_formats'] = "Paragraph=p; Heading 1=h1; Heading 2=h2"; 
    $in['toolbar1'] = $toolbar; 
    $in['toolbar2'] = ''; 
    $in['toolbar3'] = ''; 
    $in['toolbar4'] = ''; 
    return $in; 
} 
    add_filter('tiny_mce_before_init', 'my_format_TinyMCE'); 
?> 

我仍然無法正常訪問存儲的變量和函數中使用它們。有任何想法嗎?

+0

將它們保存到選項表中,在過濾器中檢索它們。 –

+0

謝謝你的快速回答!你能詳細說明一下細節嗎?我應該使用apply_filter()嗎?謝謝 ! – mmarquez

回答

0

在您的選項頁面上,您可以使用update_option保存選項。然後,在您的my_format_TinyMCE功能中,您可以使用get_option訪問它們。

+0

謝謝@Flyer--這種方法更有意義,但我遇到了困難。我正在更新我的代碼以顯示完整的上下文。謝謝! – mmarquez

+0

@mmarquez我認爲你沒有正確地啓動設置的東西。有關信息和示例,請參閱[設置API](https://developer.wordpress.org/plugins/settings/settings-api/) –

+0

問題是試圖使用$ variable = get_option(),但如果我只使用get_option()作爲變量,它工作正常。你的回答是正確的 - 你的鏈接非常有用。謝謝! – mmarquez