it-swarm.com.de

Vermögenswerte für die externe Verwendung platzieren

Ich entwickle ein Plugin, das externe Anfragen an eine WordPress-Site bearbeiten soll.

Das Plugin generiert eine .json-Datei und wird mit 2 .css-Standardstilen und 1 .css-Datei geliefert, die die allgemeinen Stilregeln enthalten (ich werde sie später kombinieren).

Mein Anliegen ist, wo ich die Dateien ablegen soll und ob es sicher ist, eine simlink zwischen dem Assets-Ordner des Plugins und dem Ort zu erstellen, an dem die .json-Datei generiert wird.

Plugin Ordnerstruktur:

plugin/
      assets/
            common.css
            blue.css
            clear.css
      plugin.php
      plugin-class.php

Und wo aktuell die json Datei erzeugt wird:

$dir = wp_upload_dir();
$dir = $dir['basedir'].'/plugin';

WP_Filesystem();
global $wp_filesystem;

if (wp_mkdir_p($dir))
     $wp_filesystem->put_contents($dir.'/latestArticles.json', 'callback('.json_encode($toExport).')', 0644);

In einer zukünftigen Version werde ich die Möglichkeit zulassen, dass die Dateien in einen S3-Bucket hochgeladen werden. In der Zwischenzeit platziere ich sie jedoch auf dem oben genannten Pfad, hauptsächlich, weil möglicherweise alle Anforderungen an mm.site.com/... über CloudFront gesendet werden

Ich frage also, ob es sicher ist, eine simlink von site/wp-content/plugins/plugin/assets/ zu site/wp-content/uploads/plugin/assets zu haben (oder zu empfehlen)? Wenn nicht, wo soll ich meine Datei ablegen, damit sie von externen Anfragen zur Verfügung gestellt werden kann?

1
w0rldart

Ich habe symbolische Links für eine Weile auf einem Entwickler-Server verwendet, aber sie sind nicht 100% zuverlässig, da einige PHP -Funktionen den Dateisystempfad des Ziels anstelle des Pfads zum Symlink selbst zurückgeben. Das bemerkenswerteste Beispiel (obwohl nicht wirklich eine Funktion) ist die magische Konstante __FILE__. (Also https://bugs.php.net/bug. php? id = 46260 ) Das kann zu Problemen führen und es kann frustrierend sein, das Problem zu lösen. Aus diesem Grund entferne ich mich von Symlinks auch auf dem Dev-Server. Vielleicht können Sie mit einer Kombination von und verwandten Funktionen dafür sorgen, dass dies zuverlässig funktioniert, aber ich glaube nicht, dass dies der Fall ist.

Wenn Sie dieses Plugin öffentlich verbreiten, besteht zusätzlich das Problem, dass diese Symlinks auf den verschiedenen Servern erstellt werden, auf denen der Code ausgeführt werden muss.

Ihre Dateien sollten unter site/wp-content/plugins/plugin/assets/ nicht weniger zugänglich sein als unter site/wp-content/uploads/plugin/assets, wenn Sie über die richtigen Berechtigungen verfügen, aber ich würde sie über einen anderen Mechanismus zugänglich machen, z. B. über die AJAX-API , falls dies der Fall ist waren ich.

3
s_ha_dum