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