客户询问是否可以对他使用的特定轮播插件进行小部件化。这意味着我应该在functions.php内创建一个调用插件功能的小部件。这意味着必须首先加载插件的代码,以便在加载functions.php文件时该功能可用于WordPress,对吗?那行得通吗?

评论

Hola Consulta Para lalamar una api api externa en que parte de wordpress lo tendia que hacer?格拉西亚斯

您好-您已将其发布为对现有问题的解答,而这实际上是一个新问题。您能问一个新问题吗?该网站是英文网站,但也有Stack Overflow enespañol。

但我认为,广泛的答案是,您可以从插件或主题中的任何位置调用外部API。但是,通常应该缓存响应,并尽可能避免长时间运行的请求。如果您确实想知道此问题,请提供有关您要调用的API以及您想做什么的更多详细信息。谢谢!

#1 楼

插件是在主题之前加载的(是的,我一直在寻找借口使用此插件):



但是,考虑到其中任何一个都是错误的代码执行。在大多数情况下,应在init钩子之前钩住并执行所有内容。根据Codex窗口小部件的注册,应该将register_widget()钩接到widget_init。由于在这种情况下加载顺序无关紧要,因此无论如何在小部件需要时,您将已加载所有内容。

评论


WP核心负载将毫无意义。

–加加林
2015年8月27日13:45



我们有机会在2016年获得更新的图表吗? ;-)

– jgraup
16年1月10日在15:04

@jgraup你说WordPress核心中的事情发生了变化... :)

–稀有
16年1月10日在21:19



@Rarst,touché;-)

– jgraup
16年1月10日在21:27

@IsaacLubow是的,不止一列中的内容针对那些各自的上下文运行,因为您可以看到,任何请求始终涉及相同的重要核心负载。

–稀有
18-10-15在11:13

#2 楼

一种有趣的方法是按执行顺序列出到文件的所有钩子。 />
add_action( 'all', '_20161224_printer' );
function _20161224_printer( $r ){

    $line =  microtime(true)*10000 . ' ' . $r .  "\n";
    $fp = fopen( ABSPATH . 'hooks.txt', 'a+');
    fwrite($fp, $line);
    fclose($fp);

}



请注意,完整列表根本无法满足每个WPSO帖子的30.000个字符限制,因此我删除了许多动作挂钩。

放置上面的代码在插件中。如果按照主题functions.php进行操作,则不会捕获plugins_loaded。另一项证明插件已在主题之前加载的证明。


此检查可能有很多好处,但请注意,对于您将调用的不同页面模板,输出将有所不同,或者您在仪表板中。

我只是从/?p=1或Hello World页面中调用此名称。

如果您没有激活单个插件,则可以将此代码放入mu-plugins文件夹中。

使用WP FS API可能会更好,但是这种方式确实很简洁。

评论


内部wp-admin插件在主题之后或按照安装顺序加载...在前端插件中在主题之前加载...

– Vishal Kumar Sahu
17年4月17日在17:17

#3 楼

如果您要的是,您可以在插件的.php文件中包含一个小部件(并可以使用一个共享的全局变量)。这是一本教程,上面有我偶然发现的示例代码。

此外,这是一个在典型请求期间按执行顺序运行的动作的列表。 #2和#10建议首先加载插件;不确定functions.php。

评论


正确,插件先于主题文件加载。如果插件包含代码,但不包含所需的窗口小部件,则可以在主题的functions.php中定义窗口小部件。

– Goldenapples
2011年8月22日23:47