我真的很指望你的帮助,在这一个。我搜索了很多,没有找到解决办法。我想有一个自定义图标,我的插件在管理菜单中,我希望它能很好地与配色方案集成。
我在$icon_url
下查找https://codex.wordpress.org/Function_Reference/add_menu_page
(WP 3.8+)如果'数据:图像/svg+xml;base64...“,则指定的SVG数据图像将用作CSS背景
但是,如果我在那里放置一个SVG图标的URL,我得到的只是一个src属性中带有SVG的img,所以它根本没有与配色方案集成,它应该是一个CSS背景。
还有,我不明白这个data:image/svg+xml;base64...
到底是什么意思?
我试着在$icon_url
中嵌入内嵌SVG,但显然它不起作用,但我不得不尝试一下。
Dashicon不是一个选项,那里没有适合我项目的图标。
8条答案
按热度按时间woobm2wo1#
使用FontAwesome的逐步示例:
* 包括颜色和自定义帖子类型 *👍
1选择一个图标
2获取SVG
fa
前缀的名称-在我的例子中,是“flak.svg”。将SVG引入WordPress
functions.php
中,您可以在其中注册自定义post类型,添加以下代码段:重要说明:
base64_encode
的内容是从Font Awesomes github页面复制的原始字符串。fill="black"
属性--这允许WordPress更改颜色。czq61nw12#
我通过分析Woocommerce得到了这个解决方案。如果没有为
add_menu_page
函数提供url,WordPress会使用默认的dashicon。所以这只是一个覆盖默认样式的问题。我把SVG转换成Icomoon上的字体。
qfe3c7zg3#
添加自定义SVG图标。
我想在我的wordpress插件我自己的自定义SVG图标,所以看看这个:https://developer.wordpress.org/reference/functions/add_menu_page/,这一切在纸面上看起来都很简单,指南告诉你如何准备
$icon_url
参数:$icon_url(字符串)(可选)用于此菜单的图标的URL。
使用数据URI传递一个base64编码的SVG,它将被着色以匹配配色方案。它应该以"data:image/svg + xml"开头;64进制'。
然而,我对此有点纠结,想在使用$icon_url参数时添加一些注解。根据我的经验和在论坛上的观察,使用自定义图标并不像创建SVG并对其进行编码那么容易。下面是将自定义SVG图标添加到管理菜单的一步一步的过程:
1.首先,以任何您想要的方式获取或创建您的SVG图标。
1.接下来,清理SVG文件并正确格式化
1.然后对文件进行base64编码
1.在base64字符串前面加上'data:image/svg + xml;64进制,'
......这将为您提供一个有效的$icon_url字符串。让我详细介绍这些步骤。
步骤1
就我所知,你可以用任何你想要的方式创建你的SVG图形,我用Adobe Illustrator创建了我的,但是任何像Inkscape,Corel draw,甚至硬编码,如果你喜欢的话。
第二步
最痛苦的部分是清理你的SVG。然而我认为这也是最重要的部分之一。经过大量的测试和实验,我发现SVG越干净,它就越有可能工作。许多图形程序添加元数据和其他绒毛,使SVG更广泛的兼容性。这是伟大的99%的时间,但当使用它的wordpress菜单图标,它经常断开,导致根本不显示图标。
以下是通常从Adobe Illustrator导出的SVG示例:
凌乱,非常凌乱。即使我们加了一些换行符和缩进,也有很多东西在里面。
所以我们要做的就是清理这些数据,去掉不必要的数据。你可能会发现,如果你把它添加为图像源,上面的代码会被加载,但是它在GUI上的颜色不正确,而且它的大小可能也不正确。所以我们需要做几件事:
1.删除〈?xml标记,这不会有帮助
1.然后你必须将每个样式硬编码到路径中,而不是使用标签。对于每个路径,从标签中找出哪些类适用于路径,并将这些类中的CSS添加到路径中。
1.完成后,可以完全删除defs元素。
1.您还可以删除
<g>
group元素,并将main path元素保留在SVG的根目录中。1.为了确保SVG的颜色与GUI一致,需要在每个路径中添加fill ="black"。
1.然后,为了确保SVG具有正确的宽度和高度,在开始元素中添加width ="20" height ="20
完成后,上面的SVG文件现在看起来如下所示:
步骤3
现在你想用base64编码你的SVG,我的方法是把文件传递到PHP的默认编码机制,然后把路径作为绝对路径复制到我的PHP中,你不想让PHP读取SVG文件,用base64编码,然后在用户每次重新加载页面时把它传递到菜单。这只是浪费资源和时间。使用PHP很容易,如果你是一个WordPress开发人员,这应该不是一个问题。
第四步
添加'数据:图像/svg + xml;base64 ",放在base64 SVG前面,因此它看起来像这样:
先生,这里有一个完全有效的$icon_url字符串。我会把这个字符串硬编码到一个变量中,每次都把它添加到你的插件中。
我希望这对其他人有帮助,因为那会为我今天早上节省几个小时!
plicqrtu4#
把
icondata
转换成base 64后,正确的表达方式是这样的;“,”很重要
ac1kyiln5#
我想我应该补充以下内容:
要让SVG自动重新着色以匹配主题,它需要设置一个fill属性,这是因为它是通过脚本动态改变的,否则它将不知道要重新着色的部分。
ctzwtxfj6#
svg
文件中必须设置了fill
属性才能工作。在Atom之类的编辑器中打开svg文件,并确保它如下所示:<path fill="black" d="....
你可以把任何一种你想要的颜色在那里,WordPress使用JS自动更新填充值的基础上管理主题。
nfzehxib7#
CSS或SVG导入的第三种替代方法是将SVG图像转换为Base64并使用
$icon_data_uri = 'data:image/svg+xml;base64,' . $icon_base64;
免责声明:我没有做这个解决方案,但是我想分享它。完全的功劳应该归于编辑人员@https://daext.com/。他们做了一个可爱的指南来生成一个svg并将其应用到WordPress管理菜单中。Source
要将SVG转换为Base64,请访问:base64并将转换后的值复制粘贴到$icon_base64中。
为确保一致性,如果链接中断,要点如下:
**步骤1)**创建名为“my_custom_plugin”的新文件夹,并将其放置在:“/wp-content/插件/{我的自定义插件}”
步骤2)在“my_custom_plugin”文件夹中创建一个".php”文件,并将其命名为“my-plugin.php”
**第3步)**将以下代码复制粘贴到文件中:
步骤4)转到WordPress的 Jmeter 板,并“激活”插件:“插件”-〉“已安装插件”。查找插件名称:“Custom-Plugin"。在“my-plugin.php”中的插件文件顶部指定
这应该给予你知道如何开始使用插件。但是,请记住,有些功能应该只启动一次,以确保良好的用户体验。Plugin Handbook
ctrmrzij8#
您必须将Base64编码的图像(数据URI)粘贴到
src
...更多的on Wikipedia。