Používám Wordpress media uploader nahrát obrázky a já jsem přemýšlel, jestli existuje způsob, jak to nahrát na můj vzdálený server namísto mého místního serveru? Příklad: Můj blog blogu wordpress je hostován na serveru A a chci použít nástroj pro nahrávání médií k nahrání snímků na server B namísto serveru A.
Oba servery provozují Ubuntu 10.04 LTS s nginx jako webserver a oba podporují ftp & sftp.
Právě jsem vytvořil plugin, který to dělá. Není to dokonalé, ale dělá svou práci.
Najdete ho v mém Githubu: https://github.com/pontusab/wp-ftp-media-library
Musíte tedy změnit některé věci v souboru na řádku 28:
/**
* Change this to match your server
* You only need to change the those with (*)
* If marked with (-) its optional
*/
$settings = array(
'Host' => 'ip or hostname', // * the ftp-server hostname
'user' => 'username', // * ftp-user
'pass' => 'password', // * ftp-password
'cdn' => 'cdn.example.com', // * This have to be a pointed domain or subdomain to the root of the uploads
'path' => '/', // - ftp-path, default is root (/). Change here and add the dir on the ftp-server,
'base' => $upload_dir['basedir'] // Basedir on local
);
To, co tento plugin dělá, mění strukturu uploadu z/year/month pouze na upload na lokálním počítači v našem případě Server A . Pak se používá php pro připojení k ftp přes: ftp_connect . Funkce spustí při spuštění wp_generate_attachment_metadata. Pak spusťte check ve složce uploadu, abyste zjistili, zda existují nějaké obrázky , pokud ano, nahrají je všechny na ftp-server přes ftp_put . Po dokončení uploadu budou soubory odstraněny z lokálního počítače pomocí funkce unlink .
Zásuvný modul pak změní adresu URL obrázků na "veřejnou" IP adresu nebo hostname, které směřují na ftp-server. Doporučuji použít něco jako static.mydomain.com nebo cdn.mydomai.com. Je třeba je ukázat na ftp-server (Server B), což umožňuje načítat obrazy z ftp-serveru.
Stejně jako ostatní členové říkají, že jste k tomu používali ftp-server, jeho lepší s reálným cdn, Mounted by Fuse nebo něco jako Amazon S3.
Téměř to zní, jako kdybyste chtěli používat CDN. Způsob, jakým většina CDN funguje, je načtení obrázků lokálně a jejich zrcadlení v místě CDN. Potom nastavíte doménu, která ukazuje na obsah CDN a přepíše vaše adresy URL obrázků, aby tuto doménu použila namísto normální adresy URL.
Existuje několik dobrých pluginů a služeb, i když mám jen zkušenosti s W3TC a Cloudfront.
Musíte pochopit, jak WP nahraje soubor. Požadavek POST odešle soubor na server, kde bude uložen v dočasné složce. Poté, WP otestuje nahraný soubor, zkopíruje jej do adresáře obsahu a odstraní dočasný soubor.
Jedná se o velmi složitý proces. U obrázků můžete zavést do souboru „media_upload_file“ a zkontrolovat, zda se jedná o obrázek. Pokud se jedná o obraz, zkopírujte jej s WP_Filesystem na externí server (použijte metodu ftpext a poskytněte své ftp pověření v rámci možností), jinak nechte WP zpracovat upload s wp_handle_upload()
. V případě kopírování souboru na externí server je nutné zadat adresu URL a tak dále WP, takže WP může data nastavit (např. Pro přílohy příloh).
Tato práce není provedena s rukou plnou kódu. Pokud nejste developer, raději si ho najměte. Nebo hledejte plugin, který to udělá za vás.