在WordPress中,将执行脚本的绝对路径转换为URL的正确方法是什么?

时间:2013-01-12 作者:akTed

简而言之,我的问题是“如何转换执行脚本的绝对路径,例如。,

/home/content/xx/xxxxxxxx/html/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN/MY_PLUGIN.PHP

/home/content/xx/xxxxxxxx/html/wp-content/themes/MY_THEME/functions.php
到绝对URL?“”

http://example.com/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN.PHP

http://example.com/wp-content/themes/MY_THEME/functions.php
我甚至不需要实际的脚本名,只需要它所在目录的路径。

我创建了一个类,它大大简化了插件选项页的创建。它还没有通过设置API完成注册/添加选项的繁重工作,它更像是一个帮助器类

创建菜单项(添加菜单页或添加子菜单页)

  • 在插件列表页(plugin.php)中创建插件操作链接
  • 在菜单中显示自定义图标(如果是顶级菜单项)
  • 在头部注入样式表和/或javascript文件-WP方式(注册/排队)
  • 其他一些杂项。与创建选项页相关的事情它通过在类的实例化中传递的最少数量的选项来完成这些事情。

    问题

    我创建这个类时只考虑了插件,但我意识到它对于主题也是现成的。。。除了从相对引用生成URL。现在,我使用

    $my_url = plugins_url(\'/\', __FILE__)
    
    为样式表、脚本文件(.js)和菜单图标文件生成URL,如果用户输入相对URL,则仅与选项页关联。如果他们输入一个绝对URL,我不会碰它。示例:如果包括\'icon_url\' => \'images/my-icon.png\' 作为一个选项,类会将其转换为

    http://example.com/wp-content/plugins/MY_PLUGIN_DIR/MY_PLUGIN/images/my-icon.png
    
    但既然我决定让这门课也适用于主题,我就意识到我不能使用plugins_url. 我试图避免(如果可能的话)强迫用户指定这个类是用于插件还是用于主题。

    有没有类似于plugins_url() 我可以用的?

  • 2 个回复
    最合适的回答,由SO网友:webaware 整理而成

    呼叫get_stylesheet_directory_uri() 对于当前主题,或get_template_directory_uri() 对于子主题的父主题,并将文件路径附加到该主题。

    $url = get_stylesheet_directory_uri() . \'/images/my-icon.png\';
    $url = get_template_directory_uri() . \'/images/my-icon.png\';
    
    编辑:要确定您是在插件、父主题还是子主题中,请比较您所在的文件夹(通过dirname(__FILE__)) 到plugin_dir_path(), get_template_directory()get_stylesheet_directory() 分别地

    SO网友:drzaus

    在您的wp-config.php 文件,最后应该定义ABSPATH 作为wp根文件夹。然后可以将文件路径中的内容替换为site_url (或者,如果您检查了主题/插件/上载目录的路径,则相应的url函数列在https://codex.wordpress.org/Function_Reference/plugin_dir_url#Related)

    结束

    相关推荐

    hide wp-content from urls

    下面是我想从页面源中包含的文件的URL中隐藏wp内容的想法。在wp设置中定义以下内容。phpdefine (\'WP_CONTENT_URL\',\'http://example.com/myownfoldername\'); 并将此添加到.htaccessRewriteRule ^myownfoldername/(.*) /wp-content/$1 [QSA,L] 在localhost上没有其他插件的情况下,这似乎可以很好地工作,但在只有几个插件的在线站点上,它可以无缝地工作。我更