Chamar para uma function de membro put_contents () em um não-object

Eu tenho um plugin e estou criando um arquivo css no wp_content.

Eu usei isso:

$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'); } 

No entanto, recebo esse erro:

Erro fatal: chamar para uma function de membro put_contents () em um não-object

string de retorno var_dump($css) .

O put_contents escreve para um arquivo existente ou ele cria um arquivo como file_put_contents faz?

Estou procurando um equivalente a isso:

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

Obrigado!

Solutions Collecting From Web of "Chamar para uma function de membro put_contents () em um não-object"

Inicialize o sistema de arquivos WP e não use mais a function file_put_contents. Tente isso:

 [...] 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'); } 
 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 

Adicione o código acima em functions.php. Depois desse enqueue esse estilo

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

Os trabalhos que testei …