当我将file_get_contents更改为WP_Filesystem时,它不起作用

时间:2015-10-23 18:41:11

标签: wordpress

我正在制作一个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;
}

2 个答案:

答案 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