我知道PHP而不是WordPress,我需要将一组文件上传到我客户的WP站点。我想要的东西与this SO post的问题有点不同。
我需要上传完全自定义文件的集合,包括PHP,html,js和css文件。理想情况下,我喜欢使用我的网络文件集合上传一个zip文件,并保持文件夹结构。这些文件与WP站点无关,因为它们不需要挂钩到菜单/插件/主题等。它们是具有自定义功能的独立文件,我只需要启动我的“主”页面单击某个WP按钮。
注意:如果我在客户端的服务器上访问FTP,那么这是迄今为止最简单的方法,但这不是一个选项,我唯一的门户就是WP管理界面。这是一个托管的wordpress网站(版本4.7),由Wordpress.com托管,它是商业计划。
编辑:
这是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
我端到端地测试了这个答案并且它有效。但是,现在发现这个问题与提供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();
?>
经过测试和工作。根据需要添加您自己的错误处理和信息/进度消息(您熟悉php)。
要上传和运行:
Plugins->Add New->Upload File
。不要打扰激活。您的脚本和存档现已上传到(/ maybe-path-to)/wp-content/plugins/mydummy
。Wordpress admin: Plugins
找到“mydummy”并单击其删除链接文件烫发应该不是问题(我假设服务器将确保文件默认为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一无所知。