将 fopen/fwrite 转换为 WordPress WP_Filesystem

我在我的主题中使用来自Easy Theme Child插件的代码,但主题检查插件失败并出现以下错误:


WARNING: fopen/fwrite was found in the file grtsth-easy-child-theme-resources.php and resources.php File operations should use the `WP_Filesystem` methods instead of direct PHP filesystem calls.

所以我尝试转换问题代码:


$create_style_css    = fopen( $file_style_css, 'w+' );

$create_function_php = fopen( $file_function_php, 'w+' );

fwrite( $create_style_css, $stylesheet_data );

fwrite( $create_function_php, $function_php_data );

至:


WP_Filesystem();

global $wp_filesystem;


$create_style_css    = $wp_filesystem->get_contents($file_style_css);

$create_function_php = $wp_filesystem->get_contents($file_function_php);

$wp_filesystem->put_contents($create_style_css, $stylesheet_data);

$wp_filesystem->put_contents($create_function_php, $function_php_data);

但是,它不起作用。没有错误。只是不创建子主题文件。我不是很熟悉WP_Filesystem,所以有什么想法我做错了吗?


谢谢


回首忆惘然
浏览 132回答 2
2回答

四季花海

(这更像是一个评论而不是一个答案 - 还不能评论!)对于许多用户来说,这是一个可以忽略的警告。您的主题将继续正常运行。警告只是说主题是以网络服务器用户身份读取/写入文件,而 WP Filesystem 可以利用其他文件操作方法,这在某些情况下是有益的。我不会费心尝试将读/写操作更改为 WP Filesystem,尤其是如果您不打算将代码部署到广泛的环境中(我假设您只是在谈论一个网站)。但是,如果你真的想继续......在继续进行文件操作之前,您需要设置/获取访问凭据。请参阅此方便的分步指南:https ://www.sitepoint.com/introduction-to-the-wordpress-filesystem-api/

慕容708150

您需要首先包含 wp_filesystem 函数并请求凭据(如果之前未使用 wp_filesystem 对象)。检查下面的代码以获取详细信息:global $wp_filesystem;if ( ! is_a( $wp_filesystem, 'WP_Filesystem_Base') ){    include_once(ABSPATH . 'wp-admin/includes/file.php');    $creds = request_filesystem_credentials( site_url() );    wp_filesystem($creds);}$create_style_css = $wp_filesystem->get_contents($url);
打开App,查看更多内容
随时随地看视频慕课网APP