骑驴觅驴 發表於 2023-7-9 00:00:00

编写PHP脚本使WordPress的主题支持Widget侧边栏

<p>
帮网友小改了一下主题. 任务比较简单, 只是为一个三栏主题添加对 Widget 的支持而已,就先从这次简单的案例开始说吧.</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="编写PHP脚本使WordPress的主题支持Widget侧边栏" alt="编写PHP脚本使WordPress的主题支持Widget侧边栏" src="https://zhuji.jb51.net/uploads/img/202305/fa8f5c35dca90c33a1994e66f9749224.jpg"></p>
<p>
<strong>单侧边栏</strong></p>
<p>
functions.php</p>
<div>
<div>
<div id="highlighter_697559">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</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>
</td>
<td>
<div>
<div>
<code>&lt;?php</code>
</div>
<div>
<code>if</code><code>( function_exists(</code><code>'register_sidebar'</code><code>) ) {</code>
</div>
<div>
<code> </code><code>register_sidebar(</code><code>array</code><code>(</code>
</div>
<div>
<code> </code><code>'before_widget'</code> <code>=&gt; </code><code>'&lt;li&gt;'</code><code>, </code><code>// widget 的开始标签</code>
</div>
<div>
<code> </code><code>'after_widget'</code> <code>=&gt; </code><code>'&lt;/li&gt;'</code><code>, </code><code>// widget 的结束标签</code>
</div>
<div>
<code> </code><code>'before_title'</code> <code>=&gt; </code><code>'&lt;h3&gt;'</code><code>, </code><code>// 标题的开始标签</code>
</div>
<div>
<code> </code><code>'after_title'</code> <code>=&gt; </code><code>'&lt;/h3&gt;'</code> <code>// 标题的结束标签</code>
</div>
<div>
<code> </code><code>));</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
sidebar.php</p>
<div>
<div>
<div id="highlighter_293149">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</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>
<div>
25</div>
<div>
26</div>
</td>
<td>
<div>
<div>
<code>&lt;div id=</code><code>"sidebar"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul </code><code>class</code><code>=</code><code>"widgets"</code><code>&gt;</code>
</div>
<div>
<code>&lt;?php </code><code>// 如果没有使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容</code>
</div>
<div>
<code>if</code> <code>( !function_exists(</code><code>'dynamic_sidebar'</code><code>) || !dynamic_sidebar() ) :</code>
</div>
<div>
<code>?&gt;</code>
</div>
<div>
<code> </code><code>&lt;!-- widget 1 --&gt;</code>
</div>
<div>
<code> </code><code>&lt;li </code><code>class</code><code>=</code><code>"widget"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;h3&gt;标题 1&lt;/h3&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 1.1&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 1.2&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 1.3&lt;/li&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code> </code><code>&lt;/li&gt;</code>
</div>
<div>
<code> </code><code>&lt;!-- widget 2 --&gt;</code>
</div>
<div>
<code> </code><code>&lt;li </code><code>class</code><code>=</code><code>"widget"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;h3&gt;标题 2&lt;/h3&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 2.1&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 2.2&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 2.3&lt;/li&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code> </code><code>&lt;/li&gt;</code>
</div>
<div>
<code>&lt;?php </code><code>endif</code><code>; ?&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code>&lt;/div&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>双侧边栏</strong></p>
<p>
functions.php</p>
<div>
<div>
<div id="highlighter_336231">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</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>
</td>
<td>
<div>
<div>
<code>&lt;?php</code>
</div>
<div>
<code>if</code><code>( function_exists(</code><code>'register_sidebar'</code><code>) ) {</code>
</div>
<div>
<code> </code><code>register_sidebar(</code><code>array</code><code>(</code>
</div>
<div>
<code> </code><code>'name'</code> <code>=&gt; </code><code>'Sidebar_1'</code><code>, </code><code>// 侧边栏 1 的名称</code>
</div>
<div>
<code> </code><code>'before_widget'</code> <code>=&gt; </code><code>'&lt;li&gt;'</code><code>, </code><code>// widget 的开始标签</code>
</div>
<div>
<code> </code><code>'after_widget'</code> <code>=&gt; </code><code>'&lt;/li&gt;'</code><code>, </code><code>// widget 的结束标签</code>
</div>
<div>
<code> </code><code>'before_title'</code> <code>=&gt; </code><code>'&lt;h3&gt;'</code><code>, </code><code>// 标题的开始标签</code>
</div>
<div>
<code> </code><code>'after_title'</code> <code>=&gt; </code><code>'&lt;/h3&gt;'</code> <code>// 标题的结束标签</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>));</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>register_sidebar(</code><code>array</code><code>(</code>
</div>
<div>
<code> </code><code>'name'</code> <code>=&gt; </code><code>'Sidebar_2'</code><code>, </code><code>// 侧边栏 2 的名称</code>
</div>
<div>
<code> </code><code>'before_widget'</code> <code>=&gt; </code><code>'&lt;li&gt;'</code><code>, </code><code>// widget 的开始标签</code>
</div>
<div>
<code> </code><code>'after_widget'</code> <code>=&gt; </code><code>'&lt;/li&gt;'</code><code>, </code><code>// widget 的结束标签</code>
</div>
<div>
<code> </code><code>'before_title'</code> <code>=&gt; </code><code>'&lt;h3&gt;'</code><code>, </code><code>// 标题的开始标签</code>
</div>
<div>
<code> </code><code>'after_title'</code> <code>=&gt; </code><code>'&lt;/h3&gt;'</code> <code>// 标题的结束标签</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>));</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
sidebar.php</p>
<div>
<div>
<div id="highlighter_834518">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</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>&lt;div id=</code><code>"sidebar_1"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul </code><code>class</code><code>=</code><code>"widgets"</code><code>&gt;</code>
</div>
<div>
<code>&lt;?php </code><code>// 如果没有在侧边栏 1 中使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容</code>
</div>
<div>
<code>if</code> <code>( !function_exists(</code><code>'dynamic_sidebar'</code><code>) || !dynamic_sidebar(</code><code>'sidebar_1'</code><code>) ) :</code>
</div>
<div>
<code>?&gt;</code>
</div>
<div>
<code> </code><code>&lt;!-- widget 1 --&gt;</code>
</div>
<div>
<code> </code><code>&lt;li </code><code>class</code><code>=</code><code>"widget"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;h3&gt;标题 1&lt;/h3&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 1.1&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 1.2&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 1.3&lt;/li&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code> </code><code>&lt;/li&gt;</code>
</div>
<div>
<code>&lt;?php </code><code>endif</code><code>; ?&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code>&lt;/div&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<br><div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<div>
<div>
<div id="highlighter_157021">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</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>&lt;div id=</code><code>"sidebar_2"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul </code><code>class</code><code>=</code><code>"widgets"</code><code>&gt;</code>
</div>
<div>
<code>&lt;?php </code><code>// 如果没有在侧边栏 2 中使用 Widget 才显示以下内容, 否则会显示 Widget 定义的内容</code>
</div>
<div>
<code>if</code> <code>( !function_exists(</code><code>'dynamic_sidebar'</code><code>) || !dynamic_sidebar(</code><code>'sidebar_2'</code><code>) ) :</code>
</div>
<div>
<code>?&gt;</code>
</div>
<div>
<code> </code><code>&lt;!-- widget 2 --&gt;</code>
</div>
<div>
<code> </code><code>&lt;li </code><code>class</code><code>=</code><code>"widget"</code><code>&gt;</code>
</div>
<div>
<code> </code><code>&lt;h3&gt;标题 2&lt;/h3&gt;</code>
</div>
<div>
<code> </code><code>&lt;ul&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 2.1&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 2.2&lt;/li&gt;</code>
</div>
<div>
<code>  </code><code>&lt;li&gt;条目 2.3&lt;/li&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code> </code><code>&lt;/li&gt;</code>
</div>
<div>
<code>&lt;?php </code><code>endif</code><code>; ?&gt;</code>
</div>
<div>
<code> </code><code>&lt;/ul&gt;</code>
</div>
<div>
<code>&lt;/div&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>N 侧边栏</strong><br>
请使用数学归纳法进行推理XD</p>
頁: [1]
查看完整版本: 编写PHP脚本使WordPress的主题支持Widget侧边栏