gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:19:30 25 4
gpt4 key购买 nike

好的,事情就这样了。使用下面的代码,我在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_PLUGIN_URLplugins_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
}
}

现在,您可以在 mcePlugin.js 文件中使用 ABSURL

file : ABSURL+'/shortcode_window.php',  // Assign your File Path here

希望这对您有帮助。

关于javascript - Wordpress tinyMCE 将不会在生产服务器上打开窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24509962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com