如何包含WP_FilesSystem()的表单?

时间:2014-04-24 作者:Mark

我使用了一些代码来尝试编写动态。css文件到一个主题文件夹,它工作正常。但是,它在某些共享托管情况下不起作用,因此会调用request\\u filesystem\\u credentials()函数。这会产生一个非常难看的ftp表单,没有连接/提交按钮。

然后,我按照伟大的奥托的教程尝试使用一个像样的表单,但最终的结果是一个好看的表单,给出了错误“保存文件时出错!”输入正确的ftp详细信息后。在该站点上安装插件和主题时,相同的ftp凭据可以完美地工作。所以我暂时放弃了奥托的代码,回到了我原来的代码,但我无法让它正常工作。

这确实令人沮丧,因为插件选项树要求将此css文件存储在此位置并可写。我不需要显示Otto的代码,因为它适用于其他所有人!!但是,以下是我的原始代码,其中肯定缺少一些重要的内容:-

    function load_dynamic_css(){ 
    global $wp_filesystem;
    if( empty( $wp_filesystem ) ) {
    require_once( ABSPATH .\'/wp-admin/includes/file.php\' );
    WP_Filesystem();
    }

    $url = wp_nonce_url(\'themes.php?page=ot-theme-options\',\'ot-theme-options\');
    if (false === ($creds = request_filesystem_credentials($url, \'\', false, false, null) ) ) {
    return; // stop processing here
    }

    if ( ! WP_Filesystem($creds) ) {
    request_filesystem_credentials($url, \'\', true, false, null);
    return;
    }

    $css_file = get_template_directory() . \'/dynamic.css\'; 
    if (!file_exists($css_file)) { 
    $wp_filesystem->put_contents( $css_file,\'\',0666);
    }
    }
    add_action( \'after_setup_theme\', \'load_dynamic_css\' );
有人能帮忙吗?我只需要保存空文件,动态。css,如果主题激活时文件不存在,则具有0666权限。选项树插件将能够将css写入该文件。如果之前有人问过这个问题,我很抱歉,但我在网上的任何地方都看不到。谢谢

1 个回复
SO网友:Otto

首先,删除前面关于调用WP\\u Filesystem()的部分;它本身。在调用之前,您需要先请求\\u filesystem\\u凭据。

其次,您需要使用$wp_filesystem->wp_themes_dir(\'themename\') 函数调用以获取正确的“远程”目录,以便能够使用正确的文件名正确调用put\\u contents()函数。“remote”目录不一定与“local”目录匹配,而get\\u template\\u directory()是获取远程写入文件路径的绝对错误的方法。不过,本地文件检查也可以。

结束

相关推荐