我可以使用哪个可湿性粉剂文件夹来写入文件?

时间:2016-05-14 作者:Benn

我正在研究一个主题,该主题使用动态头部CSS,并为管理员提供了一个选项,也可以将其放置在文件中。问题是,我不确定什么WP文件夹总是可写的。我最初将CSS文件创建添加到themename/css/ 但由于WP在更新时删除了主题,这就成了一个问题。

你认为最好的方法是什么?我可以用什么样的最安全的可写WP文件夹来实现这个功能?

4 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

最好的地方是uploads 目录-服务器可以写入它,它是存储任何用户生成/上载文件的实际目录:

$dirs = wp_upload_dir();
$path = $dirs[\'basedir\']; // /path/to/wordpress/wp-content/uploads

SO网友:fuxia

唯一具有保证写入权限的目录是upload目录。其他一切都可能受到保护。

现在,我们使用Composer部署站点,将所有内容都置于版本控制之下,并在每次部署时创建全新的站点,以便能够回滚已部署的站点。这意味着每次部署都会创建一个全新的目录。

如果必须写入文件,请使用uploads目录,因为这是唯一保留的目录(在其他目录之外)。

SO网友:majick

另一种方法是使用一个PHP文件来获取主题选项,并直接输出CSS和排队。例如:。

wp_enqueue_style(\'custom-css\',trailingslashit(get_template_directory_uri()).\'styles.php\');
起初,这似乎是一件奇怪的事情,但由于实际上应该通过WP文件系统编写新文件以获得正确的所有者/组权限,因此这是解决该问题的一种方法。

// send CSS Header
header("Content-type: text/css; charset: UTF-8");

// faster load by reducing memory with SHORTINIT
define(\'SHORTINIT\', true);

// recursively find WordPress load
function find_require($file,$folder=null) {
    if ($folder === null) {$folder = dirname(__FILE__);}
    $path = $folder.DIRECTORY_SEPARATOR.$file;
    if (file_exists($path)) {require($path); return $folder;}
    else {
        $upfolder = find_require($file,dirname($folder));
        if ($upfolder != \'\') {return $upfolder;}
    }
}

// load WordPress core (minimal)
$wp_root_path = find_require(\'wp-load.php\');
define(\'ABSPATH\', $wp_root_path);
define(\'WPINC\', \'wp-includes\');
此时,您需要包括任何其他wp-includes 获取主题选项所需的文件,根据保存方式的不同,主题选项可能会有所不同。(您可能需要添加更多内容,以免出现致命错误。)例如:。

include(ABSPATH.WPINC.DIRECTORY_SEPARATOR.\'version.php\');
include(ABSPATH.WPINC.DIRECTORY_SEPARATOR.\'general-template.php\');
include(ABSPATH.WPINC.DIRECTORY_SEPARATOR.\'link-template.php\');
然后只输出CSS选项。。。例如:。

echo \'body {color:\' . get_theme_mod(\'body_color\') . \';}\';
echo \'body {backgroundcolor:\' . get_theme_mod(\'body_background_color\') . \';}\';
exit;

SO网友:Jorin van Vilsteren

我认为最好的写信地点是在wp-content 文件夹在这里,当您有一个主题更新或WP更新时,您可以编写css文件,而不会被覆盖。

相关推荐

Need to edit themes HTML code

我在一家小型网上商店工作,我正在使用Averta福禄考主题。当我遇到他们在购物车里有虫子。cart在手机上不工作,因为我可以使用简单的css和html对其进行一些修复,我可以修复这个bug。但我找不到HTML部分的位置,因为它使用aux设计和elementor插件。也许有人可以建议这个地方如何找到代码的必要部分。这是一个福禄考购物车小部件,它在头文件中创建购物车功能。我的测试地点在这里-SHOP在这种情况下,我很想得到一些建议,因为Avera的支持在三年内忽视了这个问题。谢谢,很抱歉英语不好,这不是我的母