Comment convertir le chemin du système de fichiers en URL? J'ai trouvé des solutions générales PHP susceptibles de générer des erreurs.
Existe-t-il un moyen spécifique à WordPress de le faire?
Le genre de dépend de l'endroit où vous vous trouvez dans l'environnement WordPress.
Si vous êtes dans un plugin, vous pouvez utiliser plugins_url
.
<?php
$url = plugins_url('css/admin.css', __FILE__);
Ce qui précède vous donnera le chemin relatif au fichier passé dans le deuxième argument. Donc, si vous êtes dans le fichier de plugin principal, vous obtiendrez peut-être quelque chose comme http://example.com/wp-content/plugins/your-plugin/css/admin.css
.
Il y a aussi plugin_dir_url
pour obtenir l'URL d'un répertoire. Un modèle assez courant consiste à définir une constante avec votre URL de plugin dans le fichier de plugin principal.
<?php
/** plugin name: wpse216913 example */
define('WPSE216913_PLUGINURL', plugin_dir_url(__FILE__));
// wp_enqueue_style('example', WPSE216913_PLUGINURL.'css/admin.css');
Les thèmes, par contre, devraient utiliser get_template_directory_uri
ou get_stylesheet_directory_uri
.
get_template_directory_uri
renverra l'URI du répertoire du thème parent s'il existe un thème parent. get_stylesheet_directory_uri
renverra l'URI du thème enfant s'il existe un thème enfant, ou sinon le thème parent. Lisez le codex pour en savoir plus sur les différences. Le thème vingt-quinze présente quelques exemples de leur utilisation.
wp_enqueue_style(
'twentyfifteen-ie',
get_template_directory_uri().'/css/ie.css',
array('twentyfifteen-style'),
'20141010'
);
Utilisez wp_get_attachment_image_src
pour les images téléchargées. La valeur de retour inclura également la largeur et la hauteur de l'image. Cela vous permet également de dire quelle taille vous voulez.
Ou bien il y a wp_get_attachment_url
pour récupérer l'URL de la pièce jointe qui a été téléchargée. Si utilisé sur des images, cela renverra l'URL de l'image d'origine.
Si vous avez besoin de l'URL (ou du chemin) du répertoire de téléchargement pour pouvoir effectuer un téléchargement personnalisé ou autre, vous pouvez utiliser wp_upload_dir
qui renvoie un tableau contenant toutes les informations dont vous avez besoin.
print_r(wp_upload_dir())
/*
Array
(
[path] => /path/to/wordpress/wp-content/uploads/2016/02
[url] => http://example.com/wp-content/uploads/2016/02
[subdir] => /2016/02
[basedir] => /path/to/wordpress/wp-content/uploads
[baseurl] => http://example.com/wp-content/uploads
[error] => false
)
*/
Tous ont la même signature, urlFunc($path, $scheme)
, et les deux arguments sont optionnels.
home_url
renvoie un chemin relatif à la page d'accueil du site.
echo home_url('/example'); // http://example.com/example
site_url
renvoie une URL relative à l'emplacement des fichiers de base WordPress. Supposons que WordPress soit dans le répertoire wp
...
echo site_url('/example'); // http://example.com/wp/example
admin_url
renvoie une URL relative au chemin wp-admin
. Utile lorsque vous avez besoin du chemin d'accès à admin-ajax.php
, par exemple.
echo admin_url('admin-ajax.php'); // http://example.com/wp/wp-admin/admin-ajax.php
Il existe quelques autres, comme content_url
et includes_url
, qui renvoient les chemins d'accès au contenu WP et incluent les répertoires (ou les chemins relatifs).
Ou global
function abs_path_to_url( $path = '' ) {
$url = str_replace(
wp_normalize_path( untrailingslashit( ABSPATH ) ),
site_url(),
wp_normalize_path( $path )
);
return esc_url_raw( $url );
}
Dans un thème, si vous souhaitez convertir littéralement un chemin de système de fichiers en une URL pour un fichier donné, procédez comme suit:
$url = str_replace( get_stylesheet_directory(), get_stylesheet_directory_uri(), $systempath);
Cela devrait fonctionner avec n'importe quel chemin wordpress:
function path_to_url( $path ) {
return get_site_url() . '/' . str_replace( ABSPATH, '', $path );
}
echo path_to_url( YOUR_PATH_HERE );