我正在制作一个wordpress主题。它几乎完成了。当我在主题检查插件中检查它时,它会发出警告
WARNING: file_get_contents was found in the file sources.php File operations
should use the WP_Filesystem methods instead of direct PHP filesystem calls.
Line 84: $fonts = file_get_contents(dirname(__FILE__) . '/gwf.json');
然后我将file_get_contents
更改为WP_Filesystem
,但它没有获得值或无效。
以下是第84行的代码:
function vp_get_gwf_family()
{
$fonts = file_get_contents(dirname(__FILE__) . '/gwf.json');
$fonts = json_decode($fonts);
$fonts = array_keys(get_object_vars($fonts));
foreach ($fonts as $font)
{
$result[] = array('value' => $font, 'label' => $font);
}
return $result;
}
答案 0 :(得分:0)
由于服务器上的安全设置而导致wp_filesystem出现问题,最终导致更改:
global $wp_filesystem;
$file = $wp_filesystem->get_contents( get_template_directory() . '/assets/js/icomoon-selection.json' );
为:
ob_start();
include dirname(__FILE__) .'/../assets/js/icomoon-selection.json';
$file = ob_get_contents();
ob_end_clean();
也许它可以解决您的警告(使用wp文件系统或解决方法的示例)。
答案 1 :(得分:0)
我遇到了同样的问题。我用这些函数来解决它。
public function icon_generator() {
$file = THEMEOO_THEME_DIR . 'inc/icon/fa-icons.json';
if ( is_readable( $file ) ) {
$icons = WP_Filesystem_Direct::get_contents( $file ); // phpcs:ignore WordPressVIPMinimum.Performance.FetchingRemoteData.FileGetContentsUnknown
if ( ! empty( $icons ) ) {
$icons = json_decode( $icons );
if ( isset( $icons->icons ) && ! empty( $icons->icons ) ) {
foreach ( $icons->icons as $icon ) {
echo '<a href="#" data-themeoo-icon="ti-' . esc_attr( $icon ) . '"><span class="ti-' . esc_attr( $icon ) . '"></a>';
}
}
}
}
die();
}
我认为这将解决您的问题。为了更好地理解,您可以follow this tutorial