如何用WordPress文件系统调用替换FILE_GET_CONTENTS()

时间:2020-07-04 作者:ralphjsmit

我正在使用PHPfile_get_contents() 函数检索和回显SVG文件的内容。

<?php echo file_get_contents( get_stylesheet_directory_uri() . \'/assets/images/Search_Glyph.svg\' ); ?>
我用Wordpress.org theme checker 我目前正在解决所有问题。其中一个问题是file_get_contents.

它给了我以下警告:

WARNING: file_get_contents was found in the file header.php File operations should use the WP_Filesystem methods instead of direct PHP filesystem calls.
我试着找到关于$wp_filesystem 但可用的信息很少,示例更少(老实说,我不完全确定这是否是正确的函数)。

如何使用Wordpress函数检索文件并在PHP文件中回显其内容?

我真的不知道该怎么办。非常感谢您的帮助!

2 个回复
最合适的回答,由SO网友:Sabbir Hasan 整理而成

首先,将这两行添加到函数中。php文件。对不起,我之前忘了提这件事。

require_once ABSPATH . \'wp-admin/includes/class-wp-filesystem-base.php\';
require_once ABSPATH . \'wp-admin/includes/class-wp-filesystem-direct.php\';
现在您可以使用WP_Filesystem_Direct::get_contents($path) 而不是file_get_contents($path)

SO网友:Ejaz UL Haq

Solution 01

$wp_filesystem = new WP_Filesystem_Direct(null);
$svg= $wp_filesystem->get_contents(get_stylesheet_directory_uri() . \'/assets/images/Search_Glyph.svg\');

Solution 02

$remote_svg_file = wp_remote_get(get_stylesheet_directory_uri() . \'/assets/images/Search_Glyph.svg\');
$svg_content = wp_remote_retrieve_body($remote_svg_file );

相关推荐

在哪里可以找到CPT块模板的文档?(PHP)

我已经搜索了一天,但似乎还没有找到正确的文档,说明在尝试用php配置CPT块模板时可以传递给核心组件的参数。这就是我所拥有的,但我想通过嵌套按钮和自定义html等进一步实现这一点。但我找不到我需要的文档。\'template\' => array( array( \'core/columns\', array(), array( array( \'core/column\', array("width" => "60&quo