web-dev-qa-db-fra.com

Mise en place d'actifs à usage externe

Je développe un plugin destiné à traiter des requêtes externes sur un site wordpress.

Le plugin générera un fichier .json, et viendra avec 2 styles par défaut .css et 1 fichier .css qui contiendra les règles de style communes (je les combinerai plus tard).

Mes préoccupations sont: Où dois-je placer les fichiers? Est-il prudent de créer une simlink entre le dossier des actifs du plug-in et l'emplacement où le fichier .json est généré?.

Structure du dossier du plugin:

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

Et étaient actuellement le fichier json est généré:

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

Dans une version ultérieure, j'autoriserai la possibilité de télécharger les fichiers sur un compartiment S3, mais entre-temps, je les place actuellement dans le chemin mentionné ci-dessus, principalement parce que toutes les demandes susceptibles de recevoir mm.site.com/... passent par CloudFront.

Donc, je demande que s’il est sûr d’avoir (ou recommandé) un simlink de site/wp-content/plugins/plugin/assets/ à site/wp-content/uploads/plugin/assets? Sinon, où devrais-je placer mon dossier afin qu'il puisse être disponible à partir de demandes externes?

1
w0rldart

J'ai utilisé des liens symboliques pour plus de commodité sur un serveur de développement mais ils ne sont pas fiables à 100%, car certaines fonctions PHP renverront le chemin du système de fichiers de la cible au lieu du chemin du lien symbolique lui-même. L'exemple le plus notable (bien que pas vraiment une fonction) est la constante magique __FILE__. (Aussi https: // bugs.php.net/bug.php?id=46260 ) Cela peut causer des problèmes et il peut être frustrant de régler le problème. Pour cette raison, je m'éloigne des liens symboliques, même sur le serveur de développement. Peut-être qu'avec une combinaison de ceci et des fonctions associées , vous pouvez faire en sorte que cela fonctionne de manière fiable, mais je ne pense pas que je le ferais.

Si vous distribuez ce plugin publiquement, vous avez le problème supplémentaire de créer ces liens symboliques sur les différents serveurs sur lesquels le code doit être exécuté.

Vos fichiers ne devraient pas être moins accessibles à site/wp-content/plugins/plugin/assets/ que site/wp-content/uploads/plugin/assets si vous avez les droits nécessaires, mais je les rendrais accessibles via un autre mécanisme, comme l'API AJAX , si c'était moi.

3
s_ha_dum