即使这个问题已经有了公认的答案,我也会尝试对这个问题给出更广泛的答案。
如果你想the name of the page the user has requested, 有一个全局变量存储它:$pagenow
. 这在管理区域和网站(frontpage)都有效。始终设置此全局变量(当wp-includes/vars.php
包括get,由wp-settings.php
, 因此,当您的wp配置。php文件被加载(精确地说是在文件末尾)。
所以如果文件media-upload.php
已请求,$pagenow
将设置为"media-upload.php"
.
因此,您可以简单地检查它:
if (\'media-upload.php\' === $pagenow ) { ... do your stuff ... }
要进一步改进这一点,请考虑仅在确实需要时注册过滤器。这有助于保持实际的过滤器功能“在主题上”。这样就减少了复杂性,这总是好的。您尚未发布您的
wpe_customImages()
函数,但请考虑以下内容。我将其作为一个类编写,但它也只适用于全局函数:
class ConditionalFilterPlugin {
public function __construct() {
add_filter(\'init\', array($this, \'init\'));
}
public function init() {
if (\'media-upload.php\' === $GLOBALS[\'pagenow\'])
add_filter(\'media_buttons_context\', array($this, \'customImages\'))
;
}
public function customImages() {
// your hook function\'s code that does not need a conditional any longer.
}
}
$ConditionalFilterPlugin = new ConditionalFilterPlugin();
此存根在init挂钩上注册第二个函数。当wordpress“准备好使用”时调用init钩子,这意味着您可以使用wordpress API提供的大部分内容。
里面init()
功能,注册的先决条件customImages()
函数在实际注册之前进行检查。这样不仅可以避免从钩子回调中删除决策,还可以在其他地方重用回调函数。