PHP-插件/主题相对路径/URI

时间:2015-11-28 作者:freaky

我想从php文件中获取相对路径,而不知道绝对路径。我已经成功地做到了这一点,但原因我不知道,在一些服务器上(在极少数情况下),当我将css/js排队时,它不起作用。缺少斜杠。。。

代码如下:

define(\'PATH\', trailingslashit(str_replace(\'\\\\\', \'/\', dirname(__FILE__))));
define(\'URI\', site_url(str_replace(trailingslashit(str_replace(\'\\\\\', \'/\',ABSPATH)), \'\', PATH)))
我错过了什么?它是来自服务器还是代码本身?

2 个回复
SO网友:Mark Kaplun

只是不要这样做,你永远不可能知道插件目录是否在ABSPATH下面,你也不可能知道目录路径之外的URLhttps://codex.wordpress.org/Determining_Plugin_and_Content_Directories.

只需使用plugins\\u utl等核心api,不要重新发明轮子。

SO网友:jgraup
function get_url_from_path ($path) {

    // clean paths
    $dir_path = str_replace( \'\\\\\', \'/\', $path ) ); // file or directory
    $site_dir = trailingslashit( str_replace( \'\\\\\', \'/\', ABSPATH ) ); // path set in wp-config

    // remove server directory from path
    $file_rel = str_replace( $site_dir, \'\', $dir_path );

    // convert relative url to absolute url
    $dir_rel_url = site_url ($file_rel, \'http\' );

    // return
    return $dir_rel_url;    
}

// __FILE__ and __DIR__ are referencing the php calling these functions

echo get_url_from_path (__FILE__);

echo trailingslashit( get_url_from_path (__DIR__) );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请