web-dev-qa-db-ja.com

非オブジェクトに対してメンバー関数put_contents()を呼び出す

私はプラグインを持っていて、wp_contentにCSSファイルを作成しています。

私はこれを使った:

$this->content_dir = WP_CONTENT_DIR . "/some_folder";

$path = $this->content_dir . 'options.css';
$css='some string';
global $wp_filesystem; 
if(!$wp_filesystem->put_contents( $path, $css, 0644) ) {
    return __('Failed to create css file');
}

しかし、私はこのエラーが出ます:

致命的なエラー:非オブジェクトに対してメンバ関数put_contents()を呼び出します

var_dump($css)リターン文字列。

Put_contentsは既存のファイルに書き込みますか、それともfile_put_contentsのようにファイルを作成しますか?

私はこれと同等のものを探しています:

if(!file_put_contents($path, $css)){
    return __('Failed to create css file');
};

ありがとうございました!

4
Toniq

WPファイルシステムを初期化し、もうfile_put_contents関数を使用しないでください。これを試して:

[...]

global $wp_filesystem;
// Initialize the WP filesystem, no more using 'file-put-contents' function
if (empty($wp_filesystem)) {
    require_once (ABSPATH . '/wp-admin/includes/file.php');
    WP_Filesystem();
}

if(!$wp_filesystem->put_contents( $path, $css, 0644) ) {
    return __('Failed to create css file');
}
5
berdi
require_once( ABSPATH . 'wp-admin/includes/file.php' ); // you have to load this file

global $wp_filesystem;
$upload_dir = wp_upload_dir(); // Grab uploads folder array
$dir = trailingslashit( $upload_dir['basedir'] )  . 'cutomizer-css/'; // Set storage directory path
WP_Filesystem(); // Initial WP file system
$wp_filesystem->mkdir( $dir ); // Make a new directory folder if folder not their

$wp_filesystem->put_contents( $dir . 'news24-customize.css', $css, 0644 ); // Finally, store the file :D

上記のコードをfunctions.phpに追加してください。その後そのスタイルをエンキュー

$uploads = wp_upload_dir();
wp_enqueue_style( 'newstweentyfour-customize', trailingslashit($uploads['baseurl']) . 'newstweentyfour-customize.css', array()  );

その作品は私がテストしました..

1