Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Wordpress tinyMCE将不会打开生产服务器上的窗口_Javascript_Php_Wordpress_Tinymce - Fatal编程技术网

Javascript Wordpress tinyMCE将不会打开生产服务器上的窗口

Javascript Wordpress tinyMCE将不会打开生产服务器上的窗口,javascript,php,wordpress,tinymce,Javascript,Php,Wordpress,Tinymce,好吧,就这么定了。使用下面的代码,我在tinyMCE编辑器中创建了一个自定义按钮,它打开一个模式窗口并加载我创建的php文件。这不是Wordpress的插件,我已经将功能直接构建到我的主题中 它在我的本地环境(Ubuntu运行LAMP,vhost文件加载到站点wordpress.loc,如果有帮助的话)上运行得很好,但是在我的生产服务器上,运行cpanel的模式窗口似乎找不到php文件。它是404。所以我想WP路由系统正在成为阻碍。。但是我在WP和tinyMCE的最新版本以及最后一个版本中都遇到

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

它在我的本地环境(Ubuntu运行LAMP,vhost文件加载到站点wordpress.loc,如果有帮助的话)上运行得很好,但是在我的生产服务器上,运行cpanel的模式窗口似乎找不到php文件。它是404。所以我想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\u plugin\u URL
plugins\u URL


有什么方法可以获得可访问的绝对路径吗?

以下是如何在
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
    }
}
file : ABSURL+'/shortcode_window.php',  // Assign your File Path here

希望这对您有所帮助。

将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\u vars.theme\u url

访问脚本中的变量,如果您可以使用插件。。。CF7MCE是一个插件。下面的链接

尽管编写和添加脚本非常令人钦佩,wordpress支持插件,并且有许多插件可以帮助您实现您想要的任何目标。此外,插件大多根据专业标准编写代码(只要有,请阅读评论)


它可以帮助你自动完成很多工作,在主题之间切换也更容易。而且你几乎所有的东西都有一个插件。

is\u admin
不需要,因为
admin\u head
只在管理员端运行。检查的应该是编辑后的页面。恐怕也不行,我还是拿到了404。事实上,用这个方法,404也在我的本地机器上。我认为问题在于wordpressrouting@rugbert相对于主题中的functions.php文件,shortcode_window.php位于何处?您确定在两个安装中使用相同的.htaccess文件吗?