允许覆盖插件附带的图像的最佳方式是什么?

时间:2020-08-03 作者:Hartwig

我的插件附带了使用扩展时显示在前端的某些图像。图片很好,但在某些情况下,网站所有者可能会想要更改它。

最好的方法是什么?我可以想到以下两种方法,有更好的方法吗?具体地说,我很喜欢允许在我的插件之外的PHP中使用一个短函数来更改它。

我有两个想法

确保正确的CSS ID,以便使用自定义CSS轻松替换图像实现在后端上载不同徽标的功能,然后检查是否已完成,并显示默认徽标或上载的徽标

哈特维格

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

具体地说,我很喜欢允许在我的插件之外的PHP中使用一个短函数来更改它。

这正是过滤器的用途。它们允许插件中的代码调用任何其他想要为该过滤器注册处理函数的人。您可能已经使用Wordpress“系统”操作和过滤器通过使用add_filter, 而且很容易制作一个其他任何人都可以调用的新过滤器。

E、 例如,在您的插件中,您现在可能有以下内容:

<img src="path/to/plugin/logo.jpg">
因此,首先,您需要确保要让其他人筛选的内容都在一个变量中:

<?php
$my_plugin_logo = "path/to/plugin/logo.jpg";

echo "<img src=\\"" . $my_plugin_logo ."\\">";
然后允许任何其他代码对其进行过滤:

<?php
$my_plugin_logo = "path/to/plugin/logo.jpg";

$filtered_logo = apply_filters(\'myplugin_filter_logo\', $my_plugin_logo);

echo "<img src=\\"" . $filtered_logo ."\\">";
这将调用针对刚调用的新过滤器注册函数的任何代码\'myplugin_filter_logo\'.

E、 例如,您的用户可以将其放入自己的功能中。php或在新插件中更改徽标:

add_filter(\'myplugin_filter_logo\', \'bobs_new_logo\', 10, 1);

function bobs_new_logo($old_logo_path) {
     return "path/to/bobs/logo.gif";
}
注:

过滤函数获取旧值,但由于在这种情况下不必使用它,如果没有注册过滤函数,则会返回传入的默认值

相关推荐

WP Large Images crash page

我遇到了一个问题,照片库中最宽的一面有多个7MB、4000px的图像,导致wordpress页面崩溃,或者页面变得没有响应。我使用smush调整图像大小。除了较小的图像,还有其他想法吗?还是更少的图像?