Wordpress tinyMCE不会在生产服务器上打开窗口

时间:2014-07-01 12:11:43

标签: javascript php wordpress tinymce

好的,这就是这笔交易。使用下面的代码,我在tinyMCE编辑器中创建了一个自定义按钮,它打开一个模态窗口并加载我创建的php文件。这不是Wordpress的插件,我已将功能直接构建到我的主题中。

它完全适用于我的本地环境(Ubuntu运行LAMP,其中vhost文件加载网站为wordpress.loc,如果有任何帮助)但在我的生产服务器上运行cpanel模态窗口似乎无法找到php文件。它404s。所以我猜WP路由系统正在阻碍..但我在最新版本的WP和tinyMCE以及最后一个版本都遇到了这个问题。

以下是我如何设置它:

function register_button($buttons) {  
   array_push($buttons,"|" ,"kjdShortCodeInjection");  
   return $buttons;  
}  

function add_plugin($plugin_array) {  
    $admin_dir = get_stylesheet_directory_uri().'/lib/admin';
    $mce_plugin_js = $admin_dir.'/functions/shortcode-injector/mcePlugin.js';

    $plugin_array['kjdShortCodeInjection'] = $mce_plugin_js;  
    return $plugin_array;  
} 

     add_filter('mce_external_plugins', 'add_plugin');  
     add_filter('mce_buttons', 'register_button');  

我需要的tinyMCE的JS:

    init : function(ed, url) {
        ed.addCommand('mcekjdShortCodeInjection', function() {
            ed.windowManager.open({
                file : url+'/shortcode_window.php',
                title: "Select a shortcode",
                popup_css: "bootstrap.css",
                width : 900 + ed.getLang('kjdShortCodeInjection.delta_width', 0),
                height : 600 + ed.getLang('kjdShortCodeInjection.delta_height', 0),
                inline : 1
            }, {
                plugin_url : url // Plugin absolute URL
            });
        });

我发现的几乎所有示例或教程都将该按钮添加为插件,因此使用WP_PLUGIN_URLplugins_url

有没有办法可以获得可访问的绝对路径?

3 个答案:

答案 0 :(得分:1)

如果你可以使用插件好多了...... CF7MCE是一个插件..链接如下

http://wordpress.org/plugins/bootstrap-mce-css/

http://ecolosites.eelv.fr/cf7mce-editeur-visuel-pour-contact-form-7/

所有编码和添加脚本都非常令人钦佩,wordpress支持插件,并且有许多插件可以帮助您实现您想要的任何内容。此外,插件大多数都有根据专业标准编写的代码(在任何可用的地方阅读评论。)

它可以帮助您自动完成大量工作,在主题之间切换也更容易。几乎所有东西都有一个插件。

答案 1 :(得分:0)

以下是mcePlugin.js

中获取绝对路径的方法

functions.php文件中添加以下代码

add_action('admin_head','my_js_var_admin');
function my_js_var_admin() {

    if ( is_admin() ) {
    ?>
    <script type="text/javascript">
    var ABSURL = '<?php echo __DIR__; ?>';
    </script>
    <?php
    }
}

现在,您可以在ABSURL文件

中使用mcePlugin.js
file : ABSURL+'/shortcode_window.php',  // Assign your File Path here

希望这对你有帮助。

答案 2 :(得分:0)

将PHP中的变量注入脚本的正确方法是:

wp_enqueue_script('my-tinymce-admin-script', get_template_directory_uri() . 'assets/js/admin.js', array('jquery'), $version);

//Inject variables into the script. The script slug(first parameter) must match the slug used in wp_enqueue_script.
wp_localize_script('my-tinymce-admin-script', 'my_vars', array(
    'theme_url' => get_template_directory_uri(),
));

然后,您可以使用my_vars.theme_url访问脚本中的变量。