‘Recent Posts’链接在新窗口中打开,而不复制‘WP_WIDGET_Recent_Posts’类

时间:2018-03-23 作者:MrVimes

我有一个要求,就是在一个新窗口中打开“最近的帖子”小部件上的链接(如果有选择的话,我不会实现这一点,但我被要求这样做)。我发现要实现这种行为,我需要从class-wp-widget-recent-posts.php 进入我的孩子主题functions.php 并对其进行修改以创建行为。

为了在新窗口中打开链接,这似乎是一种冗长的方式。是否有一种更直接的方法不存在重新实现整个类的潜在缺点(如果WP在更新中更改了一些基本内容,那么将来可能会中断),并且不需要修改原始类class-wp-widget-recent-posts.php 文件

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

不,似乎没有更好的办法。只需确保您的类有一个新的类名,核心小部件不是“可插入的”。

在最近发布的小部件中,我看不到任何允许更改其输出的挂钩,也没有任何适用于更改小部件输出或回调函数的挂钩。

我见过一些技术,包括使用小部件之间运行的挂钩来捕获输出并以某种方式进行修改,但这些技术相当粗糙,您无法访问小部件的设置或小部件区域的参数。

另一种方法是通过修改全局widgets变量来替换小部件的回调函数,但这似乎并不比将小部件复制给我好,因为你必须做一些棘手的事情,比如挖掘全局widgets变量来提取原始参数。再一次让我觉得不舒服,但如果你好奇的话,这是this article.

不过,我不担心WordPress未来版本中的小部件会被破坏。您可能正在复制一个核心小部件,但出于所有目的,这是一个您将要制作的自定义小部件,WordPress非常适合保持与类似内容的向后兼容性。如果核心小部件在将来发生更改,那么您可能会错过这些更改,或者如果需要,必须重新实现这些更改,但您的小部件不太可能会中断。

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c