插件(主)文件和插件的slug之间的区别在于WordPress Codex可以做得更好。我理解你的困惑,就像我最近感觉到的那样(夹杂着沮丧)。
这是我通过对WordPress核心代码进行一些“侦探工作”所学到的。
插件文件是WordPress识别和记录插件的唯一方式。它由插件目录和主插件文件(文件头包含版本、作者等各种插件详细信息的文件)组成。
它看起来像这样:your-plugin-directory/main-file.php
如果查看活动插件数据(由返回get_option( \'active_plugins\' )
), 您将看到WordPress只需要这个插件文件来正确识别插件。
您可以选择将其视为插件的主文件相对路径(相对于wp-content/plugins/
目录)。您可以使用以下内容“合成”主插件文件的绝对路径:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
core本身生成如下插件文件:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
插件slug
有人会认为插件“slug”是插件的某种标准化ID,就像post slug是用于post一样,因此您可以使用这个“slug”将其提供给WordPress核心功能并使其正常运行。
不是真的。在核心搜索了插件段塞(或重要主题)的引用后,几乎什么也没找到,我想我已经掌握了它。
唯一真正的鼻涕虫是那些可以通过唯一URL访问的东西:帖子、页面、分类法等。这就是取某个东西的名称(如帖子标题)并生成URL友好版本的关键所在:to use it in a URL.
但在URL中,我们在哪里使用主题/插件“slug”
我们不会在单独的WordPress安装上这样做-无论是在WP admin还是前端。
然而,有一个地方与WordPress代码纠缠在一起,那就是WordPress。组织网站人们很难区分这两者,包括开发人员普遍考虑使用WordPress。组织主题或插件段塞应该与帖子或页面段塞一样工作。
它们的作用相同,但在不同的网站上。在WordPress上。org它们用于从其他主题中唯一地识别一个主题,并从其他主题中唯一地识别一个插件(在URL中,如https://wordpress.org/plugins/akismet/
).
但是,当涉及到WordPress的个别安装时,无法保证相同的唯一性,因为没有强制执行的权限(如在WordPress.org上)。如果所有的插件和主题都来自WordPress,它就可以工作。org,但谢天谢地,事实并非如此。
WordPress代码对主题/插件段塞有什么作用
WordPress核心代码
doesn\'t rely on theme/plugin slugs 执行诸如安装、激活、更新、删除主题或插件之类的操作。
对于主题,它依赖于theme directory 因为主题的主要切入点是style.css
文件(您不能使用其他CSS文件来保存主题详细信息标题)。
对于插件,它依赖于plugin directory AND the main plugin file, 因为插件可以随意调用主文件。
核心使用主题/插件slug的唯一目的是when it handles themes and plugins from the WordPress.org directory: 获取插件列表、检查更新、报告目录使用情况数据等等。
总结一下插件段塞:每当您使用slug
条目,99%的时间它将引用WordPress。插件的org slug
我们如何识别插件
如果你想在WordPress安装中以编程方式激活、更新、停用或删除某个插件,你需要使用
the plugin file. 您可以从插件的主文件中获得如下内容:
$plugin_file = plugin_basename( __FILE__ );
如果你想从另一个插件中找到某个插件,事情会变得有点棘手,因为你需要依靠一些“猜测”。
您可以硬编码插件名称,在所有插件列表中搜索插件(请参阅get_plugins()) 然后从那里获取插件文件。
如果您知道该插件定义的类或函数,则可以使用反射(请参阅this 课程答案和this one 对于函数)。
我希望这能帮助你和其他可能很难处理“插件段塞”的人。这本可以帮我节省几个小时:)