我知道PHP而不是WordPress,我需要将一组文件上传到我客户的WP站点。我想要的内容与this SO post中提出的内容略有不同。
我需要上传完全自定义文件的集合,包括PHP,html,js和css文件。理想情况下,我喜欢使用我的网络文件集合上传一个zip文件,并保持文件夹结构。这些文件与WP站点无关,因为它们不需要挂钩到菜单/插件/主题等。它们是具有自定义功能的独立文件,我只需要启动我的“主”页面单击某个WP按钮。
注意:如果我可以在客户端的服务器上访问FTP,那么到目前为止这是最简单的方法,但这不是一个选项,我唯一的门户就是WP管理界面。 这是一个由Wordpress.com托管的托管wordpress网站(版本4.7),它是商业计划。
修改
以下是Zero Gravity Payment Module.php
:
<?php
/**
* @package ZeroGravityPaymentModule
* @version 1.0
*/
/*
Plugin Name: Zero Gravity Payment Module
Plugin URI: https://www.zerogravpro.com/CCPayment/
Description: Advanced Authorize.Net credit card payment form built by Zero Gravity Programming.
Author: Nate Jensen
Version: 1.0
Author URI: https://www.zerogravpro.com/
Text Domain: hello-dolly
*/
?>
这是installer.php
:
<?php
$destinationDir = $_SERVER['DOCUMENT_ROOT'] . '/' . 'ZeroGravityPaymentModule';
mkdir($destinationDir);
$zip = new ZipArchive;
$zip->open('ZeroGravityPaymentModule.zip');
$zip->extractTo($destinationDir);
$zip->close();
?>
我能够上传我的“插件”,但现在似乎无法通过绝对网址找到我的php文件。我尝试过以下地点:
https://[actualdomain]/wp-content/plugins/Zero%20Gravity%20Payment%20Module/installer.php
答案 0 :(得分:1)
我已经对这个答案进行了端到端的测试,但它确实有效。但是,现在发现这个问题与提供Wordpress的修改/限制版本的Wordpress.com有关 - 请参阅答案底部的编辑。
这一切都可以用2个微小的脚本完成。
我:“mydummy.php”只包含一行注释(需要“愚弄”WP以上传你的实际脚本和存档文件)。
<?php
/* Plugin Name: mydummy */
?>
ii:“myinstaller.php”,例如
<?php
$destinationDir = $_SERVER['DOCUMENT_ROOT'] . '/' . 'myparentdir';
mkdir( $destinationDir, 0775); // 0755 whatever
$zip = new ZipArchive;
$zip->open('myarchive.zip');
$zip->extractTo($destinationDir); // creates dirs and files below as per archive structure
$zip->close();
?>
经过测试和工作。添加自己的错误处理&amp; info / progress msgs根据需要(你熟悉php)。
上传并运行:
创建一个zip(例如myarchive.zip)目录并包含要放在服务器上的文件。
将此zip和上面的2个脚本文件放在名为“mydummy”的文件夹中。
压缩“mydummy”文件夹“(结果应为”mydummy.zip“,其中包含文件夹”mydummy“,其中包含您的存档,myinstaller.php&amp; dummy.php。
通过Wordpress管理员上传mydummy.zip:Plugins->Add New->Upload File
。不要打扰激活。您的脚本和存档现已上传到(/ maybe-path-to)/wp-content/plugins/mydummy
。
运行您的脚本http://example.com/wp-content/plugins/mydummy/myinstaller.php JOB DONE
删除插件,脚本和存档:通过Wordpress admin: Plugins
找到“mydummy”并点击其删除链接
文件perms 不应该是一个问题(我假设服务器将确保文件默认为644等)所有者显然将与Wordpress相同 - 这应该浏览器访问不是问题。
修改强>
对Wordpress.com问题的常见回应是建议联系他们的支持;在付费的计划中,我希望你能从这里得到更好的答案。我对这个主机的了解几乎为零 - 我模糊地回忆起它的网站使用限制版的Wordpress,而在某些(?)计划中只能使用指定的插件。
您需要将其构建为WordPress插件。否则,它不会 在WordPress.com的结构中工作。
如果他们的意思是上传只会在有插件功能的情况下进行,请尝试用我的第一个答案替换空的虚拟插件:
<?php
/* Plugin Name: mydummy
Plugin URI: http://example.com
Description: do nothing plugin
Author: me
Version: 1.0.0
Author URI: http://example.com/
*/
$donothing = 0;
?>:
然而;如果他们的意思是脚本只会在“Wordpress”调用时执行,你需要将提取代码添加到插件中,但确保提取只发生一次而不是每次有人访问该网站时。在插件中,将$donothing = 0
替换为:
function site_perm_function() {
// your code to create html string of dirs (e.g. root and current) + their permissions
// return permission string
}
add_shortcode( 'display_my_site_perms', 'site_perm_function' );
function install_function() {
// your code from myinstaller.php above with code to build message string from statement errors/results
// return message string
}
add_shortcode( 'myinstaller', 'install_function' );
创建一个新的zip并尝试安装和激活插件和。如果确定:
打开帖子编辑器以创建虚拟帖子。
在帖子编辑器中插入短代码[display_my_site_perms]
然后预览帖子 - 这应该显示权限。
如果权限看起来没问题,那么请将短信[myinstaller]
添加到帖子并再次预览 - 这应该安装。
希望它可以工作,但没有经过测试,我对Wordpress.com一无所知。