史提芬咯 發表於 2023-6-24 00:00:00

详解WordPress中提醒安装插件以及隐藏插件的功能实现

<p>
<strong>提醒用户当前主题需要的插件</strong><br>
很多主题都需要一些插件的支持,这时你就需要提醒用户需要安装的插件,本文将教你,怎么在后台显眼的位置提醒用户当前主题要安装的插件。</p>
<p>
最终的效果类似下图:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="详解WordPress中提醒安装插件以及隐藏插件的功能实现" alt="详解WordPress中提醒安装插件以及隐藏插件的功能实现" src="https://zhuji.jb51.net/uploads/img/202305/a4a5c7ad662381586cb63887bae8cc7a.jpg"></p>
<p>
只需要用 admin_notices 钩子,在后台标题下边输出一个警告框,再用 is_plugin_active() 函数判断插件是否启用即可。</p>
<div>
<div>
<div id="highlighter_484003">
<div>
 </div>
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
</tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
 </div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
</td>
<td>
<div>
<div>
<code>/**</code>
</div>
<div>
<code>  </code><code>*WordPress 提醒用户当前主题需要的插件</code>
</div>
<div>
<code>  </code><code>*</code><code>http://www.endskin.com/plugins-messages/</code>
</div>
<div>
<code>*/</code>
</div>
<div>
<code>function</code> <code>Bing_plugins_messages(){</code>
</div>
<div>
<code>  </code><code>$plugin_messages</code> <code>= </code><code>array</code><code>();</code>
</div>
<div>
<code>  </code><code>include_once</code><code>( ABSPATH . </code><code>'wp-admin/includes/plugin.php'</code> <code>);</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//必须安装 WordPress SEO 插件</code>
</div>
<div>
<code>  </code><code>if</code><code>( !is_plugin_active( </code><code>'wordpress-seo/-seo.php'</code> <code>) ) </code><code>$plugin_messages</code><code>[] = </code><code>'当前主题要求必须安装并启用 WordPress SEO 插件,&lt;a href="</code><code>http://wordpress.org/plugins/wordpress-seo/</code><code>" target="_blank"&gt;点击下载此插件&lt;/a&gt;'</code><code>;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//必须安装 Simple URLs 插件</code>
</div>
<div>
<code>  </code><code>if</code><code>( !is_plugin_active( </code><code>'simple-urls/plugin.php'</code> <code>) ) </code><code>$plugin_messages</code><code>[] = </code><code>'当前主题要求必须安装并启用 Simple URLs 插件,&lt;a href="</code><code>http://wordpress.org/plugins/simple-urls/</code><code>" target="_blank"&gt;点击下载此插件&lt;/a&gt;'</code><code>;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//必须安装 Bing Phone 插件</code>
</div>
<div>
<code>  </code><code>if</code><code>( !is_plugin_active( </code><code>'Bing-Phone/Bing-Phone.php'</code> <code>) ) </code><code>$plugin_messages</code><code>[] = </code><code>'当前主题要求必须安装并启用 Bing-Phone 插件,&lt;a href="</code><code>http://www.bgbk.org/wp-theme-bing-phone.html</code><code>" target="_blank"&gt;点击下载此插件&lt;/a&gt;'</code><code>;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>if</code><code>( </code><code>count</code><code>( </code><code>$plugin_messages</code> <code>) &gt; 0 ){</code>
</div>
<div>
<code>    </code><code>echo</code> <code>'&lt;div id="message"&gt;'</code><code>;</code>
</div>
<div>
<code>      </code><code>foreach</code><code>( </code><code>$plugin_messages</code> <code>as</code> <code>$message</code> <code>) </code><code>echo</code> <code>'&lt;p&gt;&lt;strong&gt;'</code> <code>. </code><code>$message</code> <code>. </code><code>'&lt;/strong&gt;&lt;/p&gt;'</code><code>;</code>
</div>
<div>
<code>    </code><code>echo</code> <code>'&lt;/div&gt;'</code><code>;</code>
</div>
<div>
<code>  </code><code>}</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_action( </code><code>'admin_notices'</code><code>, </code><code>'Bing_plugins_messages'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>在插件列表隐藏某些插件</strong><br>
在给客户开发 WordPress 网站的时候,通常都会给客户一个管理员账户,所以客户完全有能力修改网站的主题、插件、用户和一些关键设置。</p>
<p>
但有些时候用户会不小心做出一些误操作,比如停用了必须的插件,针对这种情况,我们可以把某些插件在插件列表中隐藏,而实际上插件还是在正常运行的。</p>
<p>
下边的代码在插件列表隐藏了 WP Crontrol 和 User Switching 两个插件,在插件停用的时候依然可以看到插件,只有插件启用时插件才会被从列表中隐藏。</p>
<div>
<div>
<div id="highlighter_518379">
<div>
 </div>
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
</tr></tbody></table>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
 </div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
</td>
<td>
<div>
<div>
<code>/**</code>
</div>
<div>
<code>  </code><code>*WordPress 在插件列表隐藏某些插件</code>
</div>
<div>
<code>  </code><code>*</code><code>http://www.endskin.com/hide-plugins/</code>
</div>
<div>
<code>*/</code>
</div>
<div>
<code>function</code> <code>Bing_hide_plugins( </code><code>$plugins</code> <code>){</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//隐藏 WP Crontrol 插件</code>
</div>
<div>
<code>  </code><code>$plugin</code> <code>= </code><code>'wp-crontrol/wp-crontrol.php'</code><code>;</code>
</div>
<div>
<code>  </code><code>if</code><code>( is_plugin_active( </code><code>$plugin</code> <code>) ) unset( </code><code>$plugins</code><code>[</code><code>$plugin</code><code>] );</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>//隐藏 User Switching 插件</code>
</div>
<div>
<code>  </code><code>$plugin</code> <code>= </code><code>'user-switching/user-switching.php'</code><code>;</code>
</div>
<div>
<code>  </code><code>if</code><code>( is_plugin_active( </code><code>$plugin</code> <code>) ) unset( </code><code>$plugins</code><code>[</code><code>$plugin</code><code>] );</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>  </code><code>return</code> <code>$plugins</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_filter( </code><code>'all_plugins'</code><code>, </code><code>'Bing_hide_plugins'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
 </p>
頁: [1]
查看完整版本: 详解WordPress中提醒安装插件以及隐藏插件的功能实现