it-swarm.com.de

Wie konvertiere ich den Dateipfad in eine URL derselben Datei?

Wie konvertiere ich den Dateisystempfad in eine URL? Ich habe einige allgemeine PHP Lösungen gefunden, die fehleranfällig sein können.

Gibt es eine spezielle Möglichkeit für WordPress?

2
Boykodev

Art hängt davon ab, wo Sie in der WordPress-Umgebung sind.

Plugins

Wenn Sie sich in einem Plugin befinden, können Sie plugins_url verwenden.

<?php
$url = plugins_url('css/admin.css', __FILE__);

Oben finden Sie den Pfad relativ zu der Datei, die an das zweite Argument übergeben wurde. Wenn Sie sich also in der Haupt-Plugin-Datei befinden, erhalten Sie möglicherweise so etwas wie http://example.com/wp-content/plugins/your-plugin/css/admin.css.

Es gibt auch plugin_dir_url , um die URL eines Verzeichnisses abzurufen. Ein häufig vorkommendes Muster ist, eine Konstante mit Ihrer Plugin-URL in der Haupt-Plugin-Datei zu definieren.

<?php
/** plugin name: wpse216913 example */
define('WPSE216913_PLUGINURL', plugin_dir_url(__FILE__));

// wp_enqueue_style('example', WPSE216913_PLUGINURL.'css/admin.css');

Themen

Themen sollten dagegen get_template_directory_uri oder get_stylesheet_directory_uri verwenden.

get_template_directory_uri gibt den Verzeichnis-URI des übergeordneten Themas zurück, wenn ein übergeordnetes Thema vorhanden ist. get_stylesheet_directory_uri gibt die URI des untergeordneten Themas zurück, wenn ein untergeordnetes Thema vorhanden ist, oder die URI des übergeordneten Themas. Lesen Sie den Kodex, um mehr über die Unterschiede zu erfahren. Das fünfundzwanzigste Thema enthält einige Beispiele, wie diese verwendet werden.

wp_enqueue_style(
  'twentyfifteen-ie',
  get_template_directory_uri().'/css/ie.css',
  array('twentyfifteen-style'),
  '20141010'
);

Uploads

Verwenden Sie wp_get_attachment_image_src für hochgeladene Bilder. Der Rückgabewert enthält auch die Breite und Höhe des Bildes. Hier können Sie auch die gewünschte Größe angeben.

Oder es gibt wp_get_attachment_url , um die URL des Anhangs abzurufen, der hochgeladen wurde. Bei Verwendung für Bilder wird die URL des Originalbilds zurückgegeben.

Wenn Sie die URL (oder den Pfad) des Upload-Verzeichnisses benötigen, um so etwas wie einen benutzerdefinierten Upload durchzuführen, können Sie wp_upload_dir verwenden, das ein Array mit allen benötigten Informationen zurückgibt.

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
)
*/

Andere nützliche URL-Funktionen

Alle diese haben die gleiche Signatur, urlFunc($path, $scheme), und beide Argumente sind optional.

home_url gibt einen Pfad relativ zur Homepage der Site zurück.

echo home_url('/example'); // http://example.com/example

site_url gibt eine URL relativ zu den WordPress-Kerndateien zurück. Angenommen, Sie hatten WordPress im Verzeichnis wp...

echo site_url('/example'); // http://example.com/wp/example

admin_url gibt eine URL relativ zum wp-admin-Pfad zurück. Nützlich, wenn Sie zum Beispiel den Pfad zu admin-ajax.php benötigen.

echo admin_url('admin-ajax.php');  // http://example.com/wp/wp-admin/admin-ajax.php

Es gibt einige andere wie content_url und includes_url, die die Pfade zum WP -Inhalt zurückgeben und Verzeichnisse (bzw. Pfade zu diesen) enthalten.

8
chrisguitarguy

Oder 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 );
}
7
Serge Liatko

Wenn Sie in einem Design einen Dateisystempfad buchstäblich in eine URL für eine bestimmte Datei konvertieren möchten, gehen Sie folgendermaßen vor:

$url = str_replace( get_stylesheet_directory(), get_stylesheet_directory_uri(), $systempath);

1
Corey C.

Dies sollte mit jedem WordPress-Pfad funktionieren:

function path_to_url( $path ) {

    return get_site_url() . '/' . str_replace( ABSPATH, '', $path );

}

echo path_to_url( YOUR_PATH_HERE );
0
GDY