好的,这就是这笔交易。使用下面的代码,我在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_URL
或plugins_url
有没有办法可以获得可访问的绝对路径?
答案 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
访问脚本中的变量。