it-swarm.com.de

Verwenden des gleichen Verzeichnisses zum Speichern aller hochgeladenen Bilder in einem Wordpress-Netzwerk

Ich verwende derzeit ein Wordpress-Netzwerk, um eine Reihe von Websites zu betreiben, die alle dieselbe Vorlage, dieselben Plugins und dieselben Bilder verwenden. Da Posts auf mehreren Websites angezeigt werden, ist es sinnvoll, Bilder nur an einen Speicherort hochzuladen (und eine Kopie eines Bildes zu haben), anstatt an mehrere.

Könnte ich dies vielleicht erreichen, indem ich ein benutzerdefiniertes Umschreiben erstelle? Oder gibt es einen besseren Weg, dies zu erreichen?

Hintergrundinformation

Ich verwende WPThree Broadcast, um ein Bild über mehrere Sites zu übertragen und die Bilder daher auch in die entsprechenden Bildbibliotheken zu kopieren. Ich möchte nicht, dass der Server mit zehn Kopien desselben Bildes überladen wird. Überprüfen Sie stattdessen, ob das Bild bereits in der Tabelle wp_posts einer Site enthalten ist, und kopieren Sie dann die Daten post und post_meta nicht in die Tabellen dieser Site.

Ich möchte jedoch nicht das aktuelle Bild in einen neuen Upload-Ordner kopieren, wie dies in der Standardeinstellung WP konfiguriert ist (z. B. in /wp-content/blogs.dir/2/files/), und möchte stattdessen, dass alle Bilder kopiert werden Hochgeladen werden in /wp-content/uploads/, den Standard-Upload-Ordner für eine WP Standardinstallation.

5
Ollie

Sie können ziemlich einfach einige Aktionen hinzufügen, um dies zu archivieren.

function wpse_16722_main_uploads() {
    switch_to_blog(1);
}
add_action('load-media-new.php', 'wpse_16722_main_uploads');
add_action('load-media-upload.php', 'wpse_16722_main_uploads');
add_action('load-media.php', 'wpse_16722_main_uploads');
add_action('load-upload.php', 'wpse_16722_main_uploads');
add_action('admin_init', 'wpse_16722_main_uploads');

Dadurch wird das aktuelle Unter-Blog mit Hilfe von switch_to_blog zum Benutzer Ihrer Hauptseite. Natürlich möchten Sie die Hauptseite durch die ID 1 ersetzen.

Sie können auch eine Funktion hinzufügen, um den Upload-Ordner nur in/uploads ohne die Unterverzeichnisse umzuschreiben:

function wpse_16722_upload_dir( $args ) {
    $newdir = '/';

    $args['path']    = str_replace( $args['subdir'], '', $args['path'] ); //remove default subdir
    $args['url']     = str_replace( $args['subdir'], '', $args['url'] );      
    $args['subdir']  = $newdir;
    $args['path']   .= $newdir; 
    $args['url']    .= $newdir; 

    return $args;
}
add_filter( 'upload_dir', 'wpse_16722_upload_dir' );
4

In dem Beitrag "So ändern Sie den Standardspeicherort für das Hochladen von Medien in WordPress 3.5" von der Redaktion wird gezeigt, wie Sie das Upload-Verzeichnis in wp-config.php ändern:

define( 'UPLOADS', 'wp-content/'.'files' );
0
James H.