<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hồ Bảo Huy - Chuyên Gia SEO - Chuyên Gia Marketing &#187; Phát Triển WordPress</title>
	<atom:link href="http://www.hobaohuy.com/category/thu-thuat-wordpress/phat-trien-wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hobaohuy.com</link>
	<description>www.hobaohuy.com</description>
	<lastBuildDate>Wed, 01 Oct 2014 07:44:56 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Làm trang nghe nhạc online cực chất trong WordPress</title>
		<link>http://www.hobaohuy.com/lam-trang-nghe-nhac-online-cuc-chat-trong-wordpress.html</link>
		<comments>http://www.hobaohuy.com/lam-trang-nghe-nhac-online-cuc-chat-trong-wordpress.html#comments</comments>
		<pubDate>Tue, 30 Sep 2014 05:35:14 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Phát Triển WordPress]]></category>
		<category><![CDATA[trang nghe nhạc]]></category>
		<category><![CDATA[wordpress nâng cao]]></category>

		<guid isPermaLink="false">http://www.hobaohuy.com/?p=116</guid>
		<description><![CDATA[Trong bài viết trước chúng ta đã biết cách sử dụng custom post type cho bài hát, custom taxonomies để phân loại chúng và sử dụng custom field kết hợp meta box để hiển thị và lưu thông tin thêm của bài hát. Ngoài ra chúng ta cũng đã hoàn thành việc hiển thị bài]]></description>
				<content:encoded><![CDATA[<p>Trong bài viết trước chúng ta đã biết cách sử dụng custom post type cho bài hát, custom taxonomies để phân loại chúng và sử dụng custom field kết hợp meta box để hiển thị và lưu thông tin thêm của bài hát. Ngoài ra chúng ta cũng đã hoàn thành việc hiển thị bài hát ở trang chủ, chi tiết 1 bài hát và bài hát xem nhiều ở sidebar. Bạn nào chưa đọc bài viết trước thì có thể xem lại tại đây. Trong phần 2 này mình sẽ hướng dẫn các bạn hoàn thiện nốt trang nhạc với những chức năng cơ bản còn lại như hiển thị danh sách chi tiết bài hát mới, tìm kiếm, hiển thị thị bài hát theo thể loại và ca sĩ.</p>
<p>Đối với bài hát mới tại trang chủ các bạn bổ sung thêm 1 chút trong <strong>file index.php</strong> của theme nhé. Vì bài bài trước mình thiếu, chưa có giới hạn bài hát mới. Ở đây mình sẽ lấy bài hát mới trong tuần hiện tại. Các bạn chỉ cần sửa lại $arg thành như thế này:</p>
<div>
<div id="highlighter_774834" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$arg</code> <code class="php plain">= </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">    </code><code class="php string">"post_type"</code> <code class="php plain">=&gt; </code><code class="php string">"song"</code><code class="php plain">,</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">    </code><code class="php string">"post_status"</code> <code class="php plain">=&gt; </code><code class="php string">"publish"</code><code class="php plain">,</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">    </code><code class="php string">"posts_per_page"</code> <code class="php plain">=&gt; 10,</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">    </code><code class="php string">"orderby"</code> <code class="php plain">=&gt; </code><code class="php string">"ID"</code><code class="php plain">,</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">    </code><code class="php string">"order"</code> <code class="php plain">=&gt; </code><code class="php string">"DESC"</code><code class="php plain">,</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">    </code><code class="php string">"year"</code><code class="php plain">=&gt; </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'Y'</code><code class="php plain">),</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">    </code><code class="php string">"w"</code><code class="php plain">=&gt; </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'W'</code><code class="php plain">)</code></div>
<div class="line number9 index8 alt2"><code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Bây giờ chúng ta sẽ xử lý khi người dùng bấm nút xem thêm. Chúng ta cần <strong>1 trang để hiển thị</strong> và cách tốt nhất là dùng template page.</p>
<p>Các bạn <strong>tạo 1 file php</strong> với tên tùy ý trong thư mục theme để làm template page và để nhận được template page này thì chúng ta cần khai báo template name trong nội dung của file:</p>
<div>
<div id="highlighter_840225" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;?php </code></div>
<div class="line number3 index2 alt2"><code class="php comments">/*</code></div>
<div class="line number5 index4 alt2"><code class="php comments">Template Name: Bài Hát Mới</code></div>
<div class="line number7 index6 alt2"><code class="php spaces"> </code><code class="php comments">*/</code></div>
<div class="line number9 index8 alt2"><code class="php plain">?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Template name các bạn đặt tùy ý, sao cho dễ nhận biết là được. Tiếp đến các bạn vào dashboard tạo mới 1 page và chọn template page vừa tạo.</p>
<p>Tạo page xong các bạn xem <strong>id của page</strong> và sửa lại <strong>nút xem thêm ở file index.php</strong> như sau:</p>
<div>
<div id="highlighter_972642" class="syntaxhighlighter  xml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">a</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"mlst_more"</code> <code class="xml plain">href="&lt;?php echo get_page_link(43); ?&gt;"&gt;Xem thêm &gt;&gt;&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thay số <strong>43</strong> thành id của page các bạn vừa tạo.</p>
<p>Trước khi viết nội dung cho page này, các bạn vào <strong>file functions.php</strong> thêm hàm phân trang này vào. Bên dưới là hàm phân trang của mình, các bạn có thể viết lại tùy ý. Hàm này dựa vào đối tượng <code>global $wp_query (lấy truy vấn)</code> và <code>$paged (lấy trang hiện tại)</code> để phân trang.</p>
<div>
<div id="highlighter_715573" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
<div class="line number38 index37 alt1">38</div>
<div class="line number39 index38 alt2">39</div>
<div class="line number40 index39 alt1">40</div>
<div class="line number41 index40 alt2">41</div>
<div class="line number42 index41 alt1">42</div>
<div class="line number43 index42 alt2">43</div>
<div class="line number44 index43 alt1">44</div>
<div class="line number45 index44 alt2">45</div>
<div class="line number46 index45 alt1">46</div>
<div class="line number47 index46 alt2">47</div>
<div class="line number48 index47 alt1">48</div>
<div class="line number49 index48 alt2">49</div>
<div class="line number50 index49 alt1">50</div>
<div class="line number51 index50 alt2">51</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">function</code> <code class="php plain">dvd_paging() {</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php keyword">global</code> <code class="php variable">$wp_query</code><code class="php plain">, </code><code class="php variable">$paged</code><code class="php plain">;</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php keyword">if</code><code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">== 0) </code><code class="php variable">$paged</code> <code class="php plain">= 1;</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php variable">$total</code> <code class="php plain">= </code><code class="php variable">$wp_query</code><code class="php plain">-&gt;max_num_pages;</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">        </code><code class="php variable">$output</code> <code class="php plain">= </code><code class="php string">""</code><code class="php plain">;</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$total</code> <code class="php plain">&gt;= 2)</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">            </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(1) . </code><code class="php string">"' &gt;Đầu&lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">&gt;= 2)</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">            </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$paged</code> <code class="php plain">- 1) . </code><code class="php string">"' &gt;&lt;&lt;&lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">- 4 &gt;= 1) {</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">            </code><code class="php keyword">for</code> <code class="php plain">(</code><code class="php variable">$i</code> <code class="php plain">= </code><code class="php variable">$paged</code> <code class="php plain">- 4; </code><code class="php variable">$i</code> <code class="php plain">&lt;= </code><code class="php variable">$paged</code><code class="php plain">; </code><code class="php variable">$i</code><code class="php plain">++) {</code></div>
<div class="line number14 index13 alt1"><code class="php spaces">                </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">== </code><code class="php variable">$i</code><code class="php plain">)</code></div>
<div class="line number15 index14 alt2"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;span class='current_page'&gt; $i &lt;/span&gt;"</code><code class="php plain">;</code></div>
<div class="line number16 index15 alt1"><code class="php spaces">                </code><code class="php keyword">else</code></div>
<div class="line number17 index16 alt2"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$i</code><code class="php plain">) . </code><code class="php string">"' &gt;$i &lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number18 index17 alt1"><code class="php spaces">            </code><code class="php plain">}</code></div>
<div class="line number19 index18 alt2"><code class="php spaces">        </code><code class="php plain">}</code></div>
<div class="line number20 index19 alt1"><code class="php spaces">        </code><code class="php keyword">else</code> <code class="php plain">{</code></div>
<div class="line number21 index20 alt2"><code class="php spaces">            </code><code class="php keyword">for</code> <code class="php plain">(</code><code class="php variable">$i</code> <code class="php plain">= 1; </code><code class="php variable">$i</code> <code class="php plain">&lt;= </code><code class="php variable">$paged</code><code class="php plain">; </code><code class="php variable">$i</code><code class="php plain">++) {</code></div>
<div class="line number22 index21 alt1"><code class="php spaces">                </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">== </code><code class="php variable">$i</code><code class="php plain">)</code></div>
<div class="line number23 index22 alt2"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;span class='current_page'&gt; $i &lt;/span&gt;"</code><code class="php plain">;</code></div>
<div class="line number24 index23 alt1"><code class="php spaces">                </code><code class="php keyword">else</code></div>
<div class="line number25 index24 alt2"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$i</code><code class="php plain">) . </code><code class="php string">"' &gt;$i &lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number26 index25 alt1"><code class="php spaces">            </code><code class="php plain">}</code></div>
<div class="line number28 index27 alt1"><code class="php spaces">        </code><code class="php plain">}</code></div>
<div class="line number29 index28 alt2"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">+ 4 &lt;= </code><code class="php variable">$total</code><code class="php plain">) {</code></div>
<div class="line number30 index29 alt1"><code class="php spaces">            </code><code class="php keyword">for</code> <code class="php plain">(</code><code class="php variable">$i</code> <code class="php plain">= </code><code class="php variable">$paged</code> <code class="php plain">+ 1; </code><code class="php variable">$i</code> <code class="php plain">&lt;= </code><code class="php variable">$paged</code> <code class="php plain">+ 4; </code><code class="php variable">$i</code><code class="php plain">++) {</code></div>
<div class="line number31 index30 alt2"><code class="php spaces">                </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">== </code><code class="php variable">$i</code><code class="php plain">)</code></div>
<div class="line number32 index31 alt1"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;span class='current_page'&gt; $i &lt;/span&gt;"</code><code class="php plain">;</code></div>
<div class="line number33 index32 alt2"><code class="php spaces">                </code><code class="php keyword">else</code></div>
<div class="line number34 index33 alt1"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$i</code><code class="php plain">) . </code><code class="php string">"' &gt;$i &lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number35 index34 alt2"><code class="php spaces">            </code><code class="php plain">}</code></div>
<div class="line number37 index36 alt2"><code class="php spaces">        </code><code class="php plain">}</code><code class="php keyword">else</code> <code class="php plain">{</code></div>
<div class="line number38 index37 alt1"><code class="php spaces">            </code><code class="php keyword">for</code> <code class="php plain">(</code><code class="php variable">$i</code> <code class="php plain">= </code><code class="php variable">$paged</code> <code class="php plain">+ 1; </code><code class="php variable">$i</code> <code class="php plain">&lt;= </code><code class="php variable">$total</code><code class="php plain">; </code><code class="php variable">$i</code><code class="php plain">++) {</code></div>
<div class="line number39 index38 alt2"><code class="php spaces">                </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">== </code><code class="php variable">$i</code><code class="php plain">)</code></div>
<div class="line number40 index39 alt1"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;span class='current_page'&gt; $i &lt;/span&gt;"</code><code class="php plain">;</code></div>
<div class="line number41 index40 alt2"><code class="php spaces">                </code><code class="php keyword">else</code></div>
<div class="line number42 index41 alt1"><code class="php spaces">                    </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$i</code><code class="php plain">) . </code><code class="php string">"' &gt;$i &lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number43 index42 alt2"><code class="php spaces">            </code><code class="php plain">}</code></div>
<div class="line number45 index44 alt2"><code class="php spaces">        </code><code class="php plain">}</code></div>
<div class="line number46 index45 alt1"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$paged</code> <code class="php plain">&lt; </code><code class="php variable">$total</code><code class="php plain">)</code></div>
<div class="line number47 index46 alt2"><code class="php spaces">            </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$paged</code> <code class="php plain">+ 1) . </code><code class="php string">"'&gt;&gt;&gt;&lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number48 index47 alt1"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$total</code> <code class="php plain">&gt;= 2)</code></div>
<div class="line number49 index48 alt2"><code class="php spaces">            </code><code class="php variable">$output</code> <code class="php plain">.= </code><code class="php string">"&lt;a href='"</code> <code class="php plain">. get_pagenum_link(</code><code class="php variable">$total</code><code class="php plain">) . </code><code class="php string">"' &gt;Cuối&lt;/a&gt;"</code><code class="php plain">;</code></div>
<div class="line number50 index49 alt1"><code class="php spaces">        </code><code class="php functions">echo</code> <code class="php string">"&lt;div id='pagination'&gt;Trang: "</code> <code class="php plain">. </code><code class="php variable">$output</code> <code class="php plain">. </code><code class="php string">'&lt;/div&gt;'</code><code class="php plain">;</code></div>
<div class="line number51 index50 alt2"><code class="php spaces">    </code><code class="php plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Vào tiếp <strong>file style.css</strong> để style cho nó 1 chút:</p>
<div>
<div id="highlighter_41806" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">#pagination{</code></div>
<div class="line number3 index2 alt2"><code class="css keyword">font-size</code><code class="css plain">: .</code><code class="css value">9em</code><code class="css plain">;</code></div>
<div class="line number5 index4 alt2"><code class="css keyword">margin</code><code class="css plain">: </code><code class="css value">10px</code> <code class="css value">0</code><code class="css plain">;</code></div>
<div class="line number7 index6 alt2"><code class="css plain">}</code></div>
<div class="line number9 index8 alt2"><code class="css plain">#pagination a, #pagination .current_page{</code></div>
<div class="line number11 index10 alt2"><code class="css keyword">display</code><code class="css plain">: inline-</code><code class="css value">block</code><code class="css plain">;</code></div>
<div class="line number13 index12 alt2"><code class="css keyword">padding</code><code class="css plain">:</code><code class="css value">5px</code><code class="css plain">;</code></div>
<div class="line number15 index14 alt2"><code class="css keyword">text-decoration</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">;</code></div>
<div class="line number17 index16 alt2"><code class="css keyword">border</code><code class="css plain">: </code><code class="css value">1px</code> <code class="css value">solid</code> <code class="css value">#cecece</code><code class="css plain">;</code></div>
<div class="line number19 index18 alt2"><code class="css keyword">margin</code><code class="css plain">: </code><code class="css value">0</code> <code class="css value">3px</code><code class="css plain">; </code><code class="css keyword">color</code><code class="css plain">: </code><code class="css value">#2086F6</code><code class="css plain">;</code></div>
<div class="line number21 index20 alt2"><code class="css plain">}</code></div>
<div class="line number23 index22 alt2"><code class="css plain">#pagination a:hover{</code></div>
<div class="line number25 index24 alt2"><code class="css keyword">background</code><code class="css plain">: </code><code class="css value">#1ABC9C</code><code class="css plain">; </code><code class="css keyword">color</code><code class="css plain">: </code><code class="css value">white</code><code class="css plain">;</code></div>
<div class="line number27 index26 alt2"><code class="css plain">}</code></div>
<div class="line number29 index28 alt2"><code class="css plain">#pagination .current_page{</code></div>
<div class="line number31 index30 alt2"><code class="css keyword">border</code><code class="css plain">: </code><code class="css value">1px</code> <code class="css value">solid</code> <code class="css value">#1ABC9C</code><code class="css plain">;</code></div>
<div class="line number33 index32 alt2"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Tiếp tục đến phần hiển thị nội dung cho page này. Vì page này sẽ hiển thị bài hát mới nên chúng ta cần custom 1 câu query để hiển thị. Để sử dụng hàm phân trang ở trên thì mình cần override đối tượng <code>$wp_query</code>. Các bạn thêm đoạn code dưới vào template page của các bạn:</p>
<div>
<div id="highlighter_754864" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
<div class="line number38 index37 alt1">38</div>
<div class="line number39 index38 alt2">39</div>
<div class="line number40 index39 alt1">40</div>
<div class="line number41 index40 alt2">41</div>
<div class="line number42 index41 alt1">42</div>
<div class="line number43 index42 alt2">43</div>
<div class="line number44 index43 alt1">44</div>
<div class="line number45 index44 alt2">45</div>
<div class="line number46 index45 alt1">46</div>
<div class="line number47 index46 alt2">47</div>
<div class="line number48 index47 alt1">48</div>
<div class="line number49 index48 alt2">49</div>
<div class="line number50 index49 alt1">50</div>
<div class="line number51 index50 alt2">51</div>
<div class="line number52 index51 alt1">52</div>
<div class="line number53 index52 alt2">53</div>
<div class="line number54 index53 alt1">54</div>
<div class="line number55 index54 alt2">55</div>
<div class="line number56 index55 alt1">56</div>
<div class="line number57 index56 alt2">57</div>
<div class="line number58 index57 alt1">58</div>
<div class="line number59 index58 alt2">59</div>
<div class="line number60 index59 alt1">60</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;?php get_header(); ?&gt;</code></div>
<div class="line number3 index2 alt2"><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"content"</code><code class="php plain">&gt;</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">    </code><code class="php plain">&lt;h1 </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"ctitle"</code><code class="php plain">&gt;Danh sách bài hát mới&lt;/h1&gt;</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">         </code><code class="php plain">&lt;ul </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"mlst"</code><code class="php plain">&gt;</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">             </code><code class="php plain">&lt;?php</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">                 </code><code class="php keyword">global</code> <code class="php variable">$wp_query</code><code class="php plain">, </code><code class="php variable">$paged</code><code class="php plain">;</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">                     </code><code class="php variable">$arg</code> <code class="php plain">= </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">                          </code><code class="php string">"post_type"</code> <code class="php plain">=&gt; </code><code class="php string">"song"</code><code class="php plain">,</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">                          </code><code class="php string">"post_status"</code> <code class="php plain">=&gt; </code><code class="php string">"publish"</code><code class="php plain">,</code></div>
<div class="line number11 index10 alt2"><code class="php spaces">                          </code><code class="php string">"posts_per_page"</code> <code class="php plain">=&gt; 10,</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">                          </code><code class="php string">"orderby"</code> <code class="php plain">=&gt; </code><code class="php string">"ID"</code><code class="php plain">,</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">                          </code><code class="php string">"order"</code> <code class="php plain">=&gt; </code><code class="php string">"DESC"</code><code class="php plain">,</code></div>
<div class="line number14 index13 alt1"><code class="php spaces">                          </code><code class="php string">"paged"</code> <code class="php plain">=&gt; </code><code class="php variable">$paged</code><code class="php plain">,</code></div>
<div class="line number15 index14 alt2"><code class="php spaces">                          </code><code class="php string">"year"</code><code class="php plain">=&gt; </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'Y'</code><code class="php plain">),</code></div>
<div class="line number16 index15 alt1"><code class="php spaces">                          </code><code class="php string">"w"</code><code class="php plain">=&gt; </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'W'</code><code class="php plain">)</code></div>
<div class="line number17 index16 alt2"><code class="php spaces">                      </code><code class="php plain">);</code></div>
<div class="line number18 index17 alt1"><code class="php spaces">                  </code><code class="php variable">$wp_query</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query(</code><code class="php variable">$arg</code><code class="php plain">);</code></div>
<div class="line number20 index19 alt1"><code class="php spaces">                  </code><code class="php keyword">while</code><code class="php plain">(have_posts()) : the_post();</code></div>
<div class="line number21 index20 alt2"><code class="php spaces">                  </code><code class="php plain">?&gt;</code></div>
<div class="line number22 index21 alt1"><code class="php spaces">                      </code><code class="php plain">&lt;li&gt;</code></div>
<div class="line number23 index22 alt2"><code class="php spaces">                          </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"info-song"</code><code class="php plain">&gt;</code></div>
<div class="line number24 index23 alt1"><code class="php spaces">                              </code><code class="php plain">&lt;h3&gt;&lt;a href=</code><code class="php string">"&lt;?php the_permalink(); ?&gt;"</code><code class="php plain">&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h3&gt;</code></div>
<div class="line number25 index24 alt2"><code class="php spaces">                              </code><code class="php plain">&lt;span&gt;-&lt;/span&gt;</code></div>
<div class="line number26 index25 alt1"><code class="php spaces">                              </code><code class="php plain">&lt;p&gt;</code></div>
<div class="line number27 index26 alt2"><code class="php spaces">                               </code><code class="php plain">&lt;?php</code></div>
<div class="line number28 index27 alt1"><code class="php spaces">                               </code><code class="php variable">$singers</code> <code class="php plain">= get_the_terms(get_the_ID(), </code><code class="php string">"singer"</code><code class="php plain">);</code></div>
<div class="line number29 index28 alt2"><code class="php spaces">                               </code><code class="php keyword">if</code> <code class="php plain">( </code><code class="php variable">$singers</code> <code class="php plain">&amp;&amp; ! is_wp_error( </code><code class="php variable">$singers</code> <code class="php plain">) ) :</code></div>
<div class="line number30 index29 alt1"><code class="php spaces">                                 </code><code class="php variable">$singers_name</code> <code class="php plain">= </code><code class="php string">""</code><code class="php plain">;</code></div>
<div class="line number31 index30 alt2"><code class="php spaces">                                 </code><code class="php keyword">foreach</code><code class="php plain">(</code><code class="php variable">$singers</code> <code class="php keyword">as</code> <code class="php variable">$singer</code><code class="php plain">){                                                                                             </code><code class="php variable">$singers_name</code> <code class="php plain">.= </code><code class="php variable">$singer</code><code class="php plain">-&gt;name.</code><code class="php string">", "</code><code class="php plain">;</code></div>
<div class="line number32 index31 alt1"><code class="php spaces">                                 </code><code class="php plain">}</code></div>
<div class="line number33 index32 alt2"><code class="php spaces">                               </code><code class="php functions">echo</code> <code class="php plain">rtrim(</code><code class="php variable">$singers_name</code><code class="php plain">, </code><code class="php string">", "</code><code class="php plain">);</code></div>
<div class="line number34 index33 alt1"><code class="php spaces">                               </code><code class="php keyword">endif</code><code class="php plain">;</code></div>
<div class="line number35 index34 alt2"><code class="php spaces">                               </code><code class="php plain">?&gt;</code></div>
<div class="line number36 index35 alt1"><code class="php spaces">                               </code><code class="php plain">&lt;/p&gt;</code></div>
<div class="line number37 index36 alt2"><code class="php spaces">                               </code><code class="php plain">&lt;/div&gt;</code></div>
<div class="line number39 index38 alt2"><code class="php spaces">                               </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"view"</code><code class="php plain">&gt;</code></div>
<div class="line number40 index39 alt1"><code class="php spaces">                                </code><code class="php plain">&lt;?php</code></div>
<div class="line number41 index40 alt2"><code class="php spaces">                                 </code><code class="php variable">$view</code> <code class="php plain">= get_post_meta(get_the_ID(), </code><code class="php string">"view"</code><code class="php plain">, true);</code></div>
<div class="line number42 index41 alt1"><code class="php spaces">                                 </code><code class="php keyword">if</code><code class="php plain">(</code><code class="php variable">$view</code><code class="php plain">) </code><code class="php functions">echo</code> <code class="php variable">$view</code><code class="php plain">; </code><code class="php keyword">else</code> <code class="php functions">echo</code> <code class="php plain">0;</code></div>
<div class="line number44 index43 alt1"><code class="php spaces">                                 </code><code class="php plain">?&gt;</code></div>
<div class="line number45 index44 alt2"><code class="php spaces">                                </code><code class="php plain">&lt;/div&gt;</code></div>
<div class="line number46 index45 alt1"><code class="php spaces">                        </code><code class="php plain">&lt;/li&gt;</code></div>
<div class="line number48 index47 alt1"><code class="php spaces">                  </code><code class="php plain">&lt;?php</code></div>
<div class="line number49 index48 alt2"><code class="php spaces">                     </code><code class="php keyword">endwhile</code><code class="php plain">;</code></div>
<div class="line number50 index49 alt1"><code class="php spaces">                  </code><code class="php plain">?&gt;</code></div>
<div class="line number51 index50 alt2"><code class="php spaces">            </code><code class="php plain">&lt;/ul&gt;</code></div>
<div class="line number53 index52 alt2"><code class="php spaces">            </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"clear"</code><code class="php plain">&gt;&lt;/div&gt;</code></div>
<div class="line number54 index53 alt1"><code class="php spaces">            </code><code class="php plain">&lt;?php </code><code class="php keyword">if</code><code class="php plain">(have_posts()) {</code></div>
<div class="line number55 index54 alt2"><code class="php spaces">                        </code><code class="php plain">dvd_paging();</code></div>
<div class="line number56 index55 alt1"><code class="php spaces">            </code><code class="php plain">} ?&gt;</code></div>
<div class="line number58 index57 alt1"><code class="php plain">&lt;/div&gt;&lt;!--</code><code class="php functions">end</code> <code class="php plain">content--&gt;</code></div>
<div class="line number59 index58 alt2"><code class="php plain">&lt;?php get_sidebar(); ?&gt;</code></div>
<div class="line number60 index59 alt1"><code class="php plain">&lt;?php get_footer(); ?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Kiểm tra kết quả:</p>
<p><img class="aligncenter size-full wp-image-219" title="Hướng dẫn làm trang nghe nhạc online chuyên nghiệp trong WordPress – Part 2" src="/images/post/2014/09/30/05//danh-sach-bai-hat.png" alt="danh sach bai hat Làm trang nghe nhạc online cực chất trong WordPress" width="662" height="525" /></p>
<p>Phần hiển thị xem thêm cho bài hát mới đã xong. Tiếp tục chúng ta cần phải hiển thị danh sách các bài hát theo thể loại và ca sĩ. Cách chúng ta thường dùng là tạo file theo đúng cấu trúc mà wordpress quy định để hiển thị. Ví dụ như <code>taxonomy-{taxonomy}</code>,  … các bạn có thể xem thêm về <strong>Template Hierarchy</strong> tại đây. Với cách này chúng ta phải lặp lại code không cần thiết. Thay vì tạo ra các file như vậy mình sẽ vào <strong>file archive.php</strong> để xử lý và hiển thị chung cho các taxonomies mình cần hiển thị.</p>
<p>Mình sẽ thông qua đối tượng <code>global $wp_query</code> và dùng phương thức <code>get_queried_object()</code> của nó để lấy ra đối tượng hiện tại của query. Đối tượng này được tạo ra tùy thuộc vào trang hiện tại mình đang ở. Ví dụ ở trang single post thì nó trả về đối tượng post, ở page thì trả về đối tượng page … Vậy thì ở đây chúng ta có thể thông qua đối tượng này để kiểm tra taxonomy hiện tại và hiển thị cho phù hợp. Vì đây là trang nhạc và mình có 2 taxonomies nên mình cần kiểm tra và hiển thị như bên dưới. Các bạn vào <strong>file archive.php</strong> viết lại với nội dung sau:</p>
<div>
<div id="highlighter_92995" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
<div class="line number38 index37 alt1">38</div>
<div class="line number39 index38 alt2">39</div>
<div class="line number40 index39 alt1">40</div>
<div class="line number41 index40 alt2">41</div>
<div class="line number42 index41 alt1">42</div>
<div class="line number43 index42 alt2">43</div>
<div class="line number44 index43 alt1">44</div>
<div class="line number45 index44 alt2">45</div>
<div class="line number46 index45 alt1">46</div>
<div class="line number47 index46 alt2">47</div>
<div class="line number48 index47 alt1">48</div>
<div class="line number49 index48 alt2">49</div>
<div class="line number50 index49 alt1">50</div>
<div class="line number51 index50 alt2">51</div>
<div class="line number52 index51 alt1">52</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;?php get_header(); ?&gt;</code></div>
<div class="line number2 index1 alt1"><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"content"</code><code class="php plain">&gt;</code></div>
<div class="line number3 index2 alt2"><code class="php spaces"> </code><code class="php plain">&lt;?php</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">     </code><code class="php keyword">global</code> <code class="php variable">$wp_query</code><code class="php plain">;</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">     </code><code class="php variable">$term</code> <code class="php plain">= </code><code class="php variable">$wp_query</code><code class="php plain">-&gt;get_queried_object();</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">     </code><code class="php keyword">if</code><code class="php plain">(isset(</code><code class="php variable">$term</code><code class="php plain">-&gt;taxonomy) &amp;&amp; in_array(</code><code class="php variable">$term</code><code class="php plain">-&gt;taxonomy, </code><code class="php keyword">array</code><code class="php plain">(</code><code class="php string">"song_category"</code><code class="php plain">, </code><code class="php string">"singer"</code><code class="php plain">))) :</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">       </code><code class="php plain">?&gt;</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">       </code><code class="php plain">&lt;h1 </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"ctitle"</code><code class="php plain">&gt;&lt;?php </code><code class="php functions">echo</code> <code class="php variable">$term</code><code class="php plain">-&gt;name; ?&gt;&lt;/h1&gt;</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">       </code><code class="php plain">&lt;ul </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"mlst"</code><code class="php plain">&gt;</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">       </code><code class="php plain">&lt;?php</code></div>
<div class="line number11 index10 alt2"><code class="php spaces">       </code><code class="php keyword">while</code><code class="php plain">(have_posts()) : the_post();</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">       </code><code class="php plain">?&gt;</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">         </code><code class="php plain">&lt;li&gt;</code></div>
<div class="line number14 index13 alt1"><code class="php spaces">          </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"info-song"</code><code class="php plain">&gt;</code></div>
<div class="line number15 index14 alt2"><code class="php spaces">          </code><code class="php plain">&lt;h3&gt;&lt;a href=</code><code class="php string">"&lt;?php the_permalink(); ?&gt;"</code><code class="php plain">&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h3&gt;</code></div>
<div class="line number16 index15 alt1"><code class="php spaces">          </code><code class="php plain">&lt;span&gt;-&lt;/span&gt;</code></div>
<div class="line number17 index16 alt2"><code class="php spaces">          </code><code class="php plain">&lt;p&gt;</code></div>
<div class="line number18 index17 alt1"><code class="php spaces">          </code><code class="php plain">&lt;?php</code></div>
<div class="line number19 index18 alt2"><code class="php spaces">            </code><code class="php variable">$singers</code> <code class="php plain">= get_the_terms(get_the_ID(), </code><code class="php string">"singer"</code><code class="php plain">);</code></div>
<div class="line number20 index19 alt1"><code class="php spaces">            </code><code class="php keyword">if</code> <code class="php plain">( </code><code class="php variable">$singers</code> <code class="php plain">&amp;&amp; ! is_wp_error( </code><code class="php variable">$singers</code> <code class="php plain">) ) :</code></div>
<div class="line number21 index20 alt2"><code class="php spaces">            </code><code class="php variable">$singers_name</code> <code class="php plain">= </code><code class="php string">""</code><code class="php plain">;</code></div>
<div class="line number22 index21 alt1"><code class="php spaces">            </code><code class="php keyword">foreach</code><code class="php plain">(</code><code class="php variable">$singers</code> <code class="php keyword">as</code> <code class="php variable">$singer</code><code class="php plain">){</code></div>
<div class="line number23 index22 alt2"><code class="php spaces">              </code><code class="php variable">$singers_name</code> <code class="php plain">.= </code><code class="php variable">$singer</code><code class="php plain">-&gt;name.</code><code class="php string">", "</code><code class="php plain">;</code></div>
<div class="line number24 index23 alt1"><code class="php spaces">            </code><code class="php plain">}</code></div>
<div class="line number25 index24 alt2"><code class="php spaces">            </code><code class="php functions">echo</code> <code class="php plain">rtrim(</code><code class="php variable">$singers_name</code><code class="php plain">, </code><code class="php string">", "</code><code class="php plain">);</code></div>
<div class="line number26 index25 alt1"><code class="php spaces">            </code><code class="php keyword">endif</code><code class="php plain">;</code></div>
<div class="line number27 index26 alt2"><code class="php spaces">          </code><code class="php plain">?&gt;</code></div>
<div class="line number28 index27 alt1"><code class="php spaces">         </code><code class="php plain">&lt;/p&gt;</code></div>
<div class="line number29 index28 alt2"><code class="php spaces">         </code><code class="php plain">&lt;/div&gt;</code></div>
<div class="line number30 index29 alt1"><code class="php spaces">         </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"view"</code><code class="php plain">&gt;</code></div>
<div class="line number31 index30 alt2"><code class="php spaces">         </code><code class="php plain">&lt;?php</code></div>
<div class="line number32 index31 alt1"><code class="php spaces">           </code><code class="php variable">$view</code> <code class="php plain">= get_post_meta(get_the_ID(), </code><code class="php string">"view"</code><code class="php plain">, true);</code></div>
<div class="line number33 index32 alt2"><code class="php spaces">           </code><code class="php keyword">if</code><code class="php plain">(</code><code class="php variable">$view</code><code class="php plain">) </code><code class="php functions">echo</code> <code class="php variable">$view</code><code class="php plain">; </code><code class="php keyword">else</code> <code class="php functions">echo</code> <code class="php plain">0;</code></div>
<div class="line number34 index33 alt1"><code class="php spaces">          </code><code class="php plain">?&gt;</code></div>
<div class="line number35 index34 alt2"><code class="php spaces">         </code><code class="php plain">&lt;/div&gt;</code></div>
<div class="line number36 index35 alt1"><code class="php spaces">        </code><code class="php plain">&lt;/li&gt;</code></div>
<div class="line number37 index36 alt2"><code class="php spaces">     </code><code class="php plain">&lt;?php</code></div>
<div class="line number38 index37 alt1"><code class="php spaces">     </code><code class="php keyword">endwhile</code><code class="php plain">;</code></div>
<div class="line number39 index38 alt2"><code class="php spaces">  </code><code class="php plain">?&gt;</code></div>
<div class="line number40 index39 alt1"><code class="php spaces"> </code><code class="php plain">&lt;/ul&gt;</code></div>
<div class="line number41 index40 alt2"><code class="php spaces"> </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"clear"</code><code class="php plain">&gt;&lt;/div&gt;</code></div>
<div class="line number42 index41 alt1"><code class="php spaces"> </code><code class="php plain">&lt;?php</code></div>
<div class="line number43 index42 alt2"><code class="php spaces"> </code><code class="php keyword">if</code><code class="php plain">(have_posts()) {</code></div>
<div class="line number44 index43 alt1"><code class="php spaces">  </code><code class="php plain">dvd_paging();</code></div>
<div class="line number45 index44 alt2"><code class="php spaces"> </code><code class="php plain">}</code><code class="php keyword">else</code><code class="php plain">{</code></div>
<div class="line number46 index45 alt1"><code class="php spaces">  </code><code class="php functions">echo</code> <code class="php string">"&lt;p&gt;Chưa có bài hát!&lt;/p&gt;"</code><code class="php plain">;</code></div>
<div class="line number47 index46 alt2"><code class="php spaces"> </code><code class="php plain">}</code></div>
<div class="line number48 index47 alt1"><code class="php spaces"> </code><code class="php keyword">endif</code><code class="php plain">;</code></div>
<div class="line number49 index48 alt2"><code class="php spaces"> </code><code class="php plain">?&gt;</code></div>
<div class="line number50 index49 alt1"><code class="php plain">&lt;/div&gt;&lt;!--</code><code class="php functions">end</code> <code class="php plain">content--&gt;</code></div>
<div class="line number51 index50 alt2"><code class="php plain">&lt;?php get_sidebar(); ?&gt;</code></div>
<div class="line number52 index51 alt1"><code class="php plain">&lt;?php get_footer(); ?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Các bạn có thể dùng để kiểm tra và hiển thị taxonomies cho post type khác bằng if, else. Chọn 1 thể loại hay ca sĩ để kiểm tra kết quả nhé:</p>
<p>&nbsp;</p>
<p><img class="aligncenter size-full wp-image-222" title="Hướng dẫn làm trang nghe nhạc online chuyên nghiệp trong WordPress – Part 2" src="/images/post/2014/09/30/05//danh-sach-bai-hat-theo-custom-taxnonomy1.png" alt="danh sach bai hat theo custom taxnonomy1 Làm trang nghe nhạc online cực chất trong WordPress" width="656" height="513" />Và cuối cùng là phần tìm kiếm. Đối với phần tìm kiếm này mình chỉ muốn hiển thị kết quả là bài hát thôi, vì đây là trang nhạc mà. Do đó mình cần tùy chỉnh lại query 1 chút. Bây giờ mình không dùng cách thường làm ở trên nữa mà mình sẽ sử dụng cách mới đó là dùng hook:</p>
<div>
<div id="highlighter_735307" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">function</code> <code class="php plain">dvd_search_filter(</code><code class="php variable">$query</code><code class="php plain">) {</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php keyword">if</code> <code class="php plain">(</code><code class="php variable">$query</code><code class="php plain">-&gt;is_search &amp;&amp; !is_admin() ) {</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">            </code><code class="php variable">$query</code><code class="php plain">-&gt;set(</code><code class="php string">'post_type'</code><code class="php plain">, </code><code class="php keyword">array</code><code class="php plain">(</code><code class="php string">"song"</code><code class="php plain">));</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php plain">}</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">        </code><code class="php keyword">return</code> <code class="php variable">$query</code><code class="php plain">;</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">    </code><code class="php plain">}</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">    </code><code class="php plain">add_filter(</code><code class="php string">'pre_get_posts'</code><code class="php plain">,</code><code class="php string">'dvd_search_filter'</code><code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thông qua hook này chúng ta có thể custom lại query 1 cách dễ dàng. Ở trên mình đã set lại post type trong câu truy vấn của trang tìm kiếm vì thế kết quả tìm kiếm sẽ chỉ hiển thị bài hát mà thôi. Qua đây các bạn đã biết thêm 1 cách khác để custom query rồi đấy.</p>
<p>Việc đơn giản còn lại là vào <strong>file search.php</strong> kiểm tra và dùng loop để hiển thị kết quả tìm kiếm nữa thôi:</p>
<div>
<div id="highlighter_43753" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
<div class="line number38 index37 alt1">38</div>
<div class="line number39 index38 alt2">39</div>
<div class="line number40 index39 alt1">40</div>
<div class="line number41 index40 alt2">41</div>
<div class="line number42 index41 alt1">42</div>
<div class="line number43 index42 alt2">43</div>
<div class="line number44 index43 alt1">44</div>
<div class="line number45 index44 alt2">45</div>
<div class="line number46 index45 alt1">46</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;?php get_header(); ?&gt;</code></div>
<div class="line number2 index1 alt1"><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"content"</code><code class="php plain">&gt;</code></div>
<div class="line number3 index2 alt2"><code class="php spaces"> </code><code class="php plain">&lt;h1 </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"ctitle"</code><code class="php plain">&gt;Tìm kiếm với </code><code class="php string">"&lt;?php echo get_query_var('s'); ?&gt;"</code><code class="php plain">&lt;/h1&gt;</code></div>
<div class="line number4 index3 alt1"><code class="php spaces"> </code><code class="php plain">&lt;ul </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"mlst"</code><code class="php plain">&gt;</code></div>
<div class="line number5 index4 alt2"><code class="php spaces"> </code><code class="php plain">&lt;?php</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">  </code><code class="php keyword">while</code><code class="php plain">(have_posts()) : the_post();</code></div>
<div class="line number7 index6 alt2"><code class="php spaces"> </code><code class="php plain">?&gt;</code></div>
<div class="line number8 index7 alt1"><code class="php spaces"> </code><code class="php plain">&lt;li&gt;</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">  </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"info-song"</code><code class="php plain">&gt;</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">  </code><code class="php plain">&lt;h3&gt;&lt;a href=</code><code class="php string">"&lt;?php the_permalink(); ?&gt;"</code><code class="php plain">&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h3&gt;</code></div>
<div class="line number11 index10 alt2"><code class="php spaces">  </code><code class="php plain">&lt;span&gt;-&lt;/span&gt;</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">  </code><code class="php plain">&lt;p&gt;</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">  </code><code class="php plain">&lt;?php</code></div>
<div class="line number14 index13 alt1"><code class="php spaces">  </code><code class="php variable">$singers</code> <code class="php plain">= get_the_terms(get_the_ID(), </code><code class="php string">"singer"</code><code class="php plain">);</code></div>
<div class="line number15 index14 alt2"><code class="php spaces">  </code><code class="php keyword">if</code> <code class="php plain">( </code><code class="php variable">$singers</code> <code class="php plain">&amp;&amp; ! is_wp_error( </code><code class="php variable">$singers</code> <code class="php plain">) ) :</code></div>
<div class="line number16 index15 alt1"><code class="php spaces">    </code><code class="php variable">$singers_name</code> <code class="php plain">= </code><code class="php string">""</code><code class="php plain">;</code></div>
<div class="line number17 index16 alt2"><code class="php spaces">  </code><code class="php keyword">foreach</code><code class="php plain">(</code><code class="php variable">$singers</code> <code class="php keyword">as</code> <code class="php variable">$singer</code><code class="php plain">){</code></div>
<div class="line number18 index17 alt1"><code class="php spaces">    </code><code class="php variable">$singers_name</code> <code class="php plain">.= </code><code class="php variable">$singer</code><code class="php plain">-&gt;name.</code><code class="php string">", "</code><code class="php plain">;</code></div>
<div class="line number19 index18 alt2"><code class="php spaces"> </code><code class="php plain">}</code></div>
<div class="line number20 index19 alt1"><code class="php spaces">  </code><code class="php functions">echo</code> <code class="php plain">rtrim(</code><code class="php variable">$singers_name</code><code class="php plain">, </code><code class="php string">", "</code><code class="php plain">);</code></div>
<div class="line number21 index20 alt2"><code class="php spaces">  </code><code class="php keyword">endif</code><code class="php plain">;</code></div>
<div class="line number22 index21 alt1"><code class="php spaces">  </code><code class="php plain">?&gt;</code></div>
<div class="line number23 index22 alt2"><code class="php spaces">  </code><code class="php plain">&lt;/p&gt;</code></div>
<div class="line number24 index23 alt1"><code class="php spaces">  </code><code class="php plain">&lt;/div&gt;</code></div>
<div class="line number25 index24 alt2"><code class="php spaces">  </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"view"</code><code class="php plain">&gt;</code></div>
<div class="line number26 index25 alt1"><code class="php spaces">  </code><code class="php plain">&lt;?php</code></div>
<div class="line number27 index26 alt2"><code class="php spaces">   </code><code class="php variable">$view</code> <code class="php plain">= get_post_meta(get_the_ID(), </code><code class="php string">"view"</code><code class="php plain">, true);</code></div>
<div class="line number28 index27 alt1"><code class="php spaces">   </code><code class="php keyword">if</code><code class="php plain">(</code><code class="php variable">$view</code><code class="php plain">) </code><code class="php functions">echo</code> <code class="php variable">$view</code><code class="php plain">; </code><code class="php keyword">else</code> <code class="php functions">echo</code> <code class="php plain">0;</code></div>
<div class="line number29 index28 alt2"><code class="php spaces">  </code><code class="php plain">?&gt;</code></div>
<div class="line number30 index29 alt1"><code class="php spaces">  </code><code class="php plain">&lt;/div&gt;</code></div>
<div class="line number31 index30 alt2"><code class="php spaces"> </code><code class="php plain">&lt;/li&gt;</code></div>
<div class="line number32 index31 alt1"><code class="php spaces"> </code><code class="php plain">&lt;?php</code></div>
<div class="line number33 index32 alt2"><code class="php spaces"> </code><code class="php keyword">endwhile</code><code class="php plain">;</code></div>
<div class="line number34 index33 alt1"><code class="php spaces"> </code><code class="php plain">?&gt;</code></div>
<div class="line number35 index34 alt2"><code class="php spaces"> </code><code class="php plain">&lt;/ul&gt;</code></div>
<div class="line number36 index35 alt1"><code class="php spaces"> </code><code class="php plain">&lt;div </code><code class="php keyword">class</code><code class="php plain">=</code><code class="php string">"clear"</code><code class="php plain">&gt;&lt;/div&gt;</code></div>
<div class="line number37 index36 alt2"><code class="php spaces"> </code><code class="php plain">&lt;?php</code></div>
<div class="line number38 index37 alt1"><code class="php spaces"> </code><code class="php keyword">if</code><code class="php plain">(have_posts()) {</code></div>
<div class="line number39 index38 alt2"><code class="php spaces">   </code><code class="php plain">dvd_paging();</code></div>
<div class="line number40 index39 alt1"><code class="php spaces"> </code><code class="php plain">}</code><code class="php keyword">else</code><code class="php plain">{</code></div>
<div class="line number41 index40 alt2"><code class="php spaces">   </code><code class="php functions">echo</code> <code class="php string">"&lt;p&gt;Không tìm thấy kết quả nào cho từ khóa ""</code><code class="php plain">.get_query_var(</code><code class="php string">'s'</code><code class="php plain">).</code><code class="php string">""&lt;/p&gt;"</code><code class="php plain">;</code></div>
<div class="line number42 index41 alt1"><code class="php spaces"> </code><code class="php plain">}</code></div>
<div class="line number43 index42 alt2"><code class="php spaces"> </code><code class="php plain">?&gt;</code></div>
<div class="line number44 index43 alt1"><code class="php plain">&lt;/div&gt;&lt;!--</code><code class="php functions">end</code> <code class="php plain">content--&gt;</code></div>
<div class="line number45 index44 alt2"><code class="php plain">&lt;?php get_sidebar(); ?&gt;</code></div>
<div class="line number46 index45 alt1"><code class="php plain">&lt;?php get_footer(); ?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thử tìm kiếm 1 phát xem nào <img class="wp-smiley" style="opacity: 1;" title="Hướng dẫn làm trang nghe nhạc online chuyên nghiệp trong WordPress – Part 2" src="/images/post/2014/09/30/05//icon_biggrin.gif" alt="icon biggrin Làm trang nghe nhạc online cực chất trong WordPress"  /></p>
<p><img class="aligncenter size-full wp-image-220" title="Hướng dẫn làm trang nghe nhạc online chuyên nghiệp trong WordPress – Part 2" src="/images/post/2014/09/30/05//ket-qua-tim-kiem.png" alt="ket qua tim kiem Làm trang nghe nhạc online cực chất trong WordPress" width="669" height="188" /></p>
<h3>Lời kết</h3>
<p>Sau 2 phần cũng khá dài thì mình cũng đã hướng dẫn xong cho các bạn làm 1 trang nghe nhạc trong wordpres. Hy vọng qua 2 bài hướng dẫn này các bạn có thể tự tay làm lại cho mình 1 trang và hoàn thiện nó hơn nữa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hobaohuy.com/lam-trang-nghe-nhac-online-cuc-chat-trong-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tạo Menu hỗ trợ Responsive cho các site chạy WordPress</title>
		<link>http://www.hobaohuy.com/tao-menu-ho-tro-responsive-cho-cac-site-chay-wordpress.html</link>
		<comments>http://www.hobaohuy.com/tao-menu-ho-tro-responsive-cho-cac-site-chay-wordpress.html#comments</comments>
		<pubDate>Tue, 30 Sep 2014 05:34:49 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Phát Triển WordPress]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[wp_nav_menu]]></category>

		<guid isPermaLink="false">http://www.hobaohuy.com/?p=115</guid>
		<description><![CDATA[Không biết ở đây có ai giống mình không, đó là trong quy trình thiết kế một giao diện thì mình không sợ gì mà chỉ sợ nhất mỗi cách làm menu vì ban đầu nó hơi rối, và càng thảm họa hơn nếu bạn không biết CSS. Hiểu được khó khăn đó, nên trong]]></description>
				<content:encoded><![CDATA[<p>Không biết ở đây có ai giống mình không, đó là trong quy trình thiết kế một giao diện thì mình không sợ gì mà chỉ sợ nhất mỗi cách làm menu vì ban đầu nó hơi rối, và càng thảm họa hơn nếu bạn không biết CSS.</p>
<p>Hiểu được khó khăn đó, nên trong bài này mình sẽ hướng dẫn các bạn chi tiết cách làm một menu hỗ trợ Repsonsive đơn giản nhất nhưng cũng có thể sử dụng lâu dài.</p>
<h3>1. Kỹ thuật</h3>
<p><strong>Cần xem</strong>: Cấu trúc theme WordPress.</p>
<h4>1.1) Làm menu dropdown</h4>
<p>Để làm một menu dropdown thì ta sẽ sử dụng CSS3 mà cụ thể quan trọng nhất là thêm thuộc tính position: relative vào menu item mẹ và position: absolute cho các menu item con để có thể căn chỉnh vị trí của nó.</p>
<h4>1.2) Làm menu Repsonsive</h4>
<p>Chúng ta sẽ không viết CSS cho menu để nó co giãn, ẩn hiện ở thiết bị di động mà sẽ sử dụng một plugin dành cho jQuery tên là Sidr cho đỡ mất thời gian và menu cũng chuyên nghiệp hơn.</p>
<h3>2. Cách làm menu</h3>
<p>Bạn có thể thực hành bài này ở một menu bất kỳ, miễn là bạn hiểu được cấu trúc theme đó và biết mình sẽ chèn code vào đâu. Còn mình, mình sẽ sử dụng theme BlankSlate.</p>
<h4>2.1) Tạo menu location</h4>
<p>Tham khảo trước: Cách tạo menu trong WordPress</p>
<p>Trước hết bạn hãy viết đoạn sau vào file functions.php trong theme để tạo ra hai menu location, một cái dành cho thiết bị Desktop và một cái dành cho thiết bị di động.</p>
<div>
<div id="highlighter_816871" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">register_nav_menus( </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php string">'main-menu'</code> <code class="php plain">=&gt; </code><code class="php string">'Main Menu'</code><code class="php plain">,</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php string">'mobile-menu'</code> <code class="php plain">=&gt; </code><code class="php string">'Mobile Menu'</code></div>
<div class="line number4 index3 alt1"><code class="php plain">) );</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Khi tạo xong, hãy vào <strong>Appearance -&gt; Menus</strong> tạo menu và đặt cho nó ở cả hai location.</p>
<p><img class="aligncenter size-full" style="opacity: 1;" title="Hướng dẫn tạo Menu hỗ trợ Responsive cho site WordPress" src="/images/post/2014/09/30/05//responsivemenu-menulocation.jpg" alt="responsivemenu menulocation Tạo Menu hỗ trợ Responsive cho các site chạy WordPress" width="502" height="539" /></p>
<h4>2.2) Viết code hiển thị cho menu</h4>
<p>Bây giờ bạn hãy mở file <strong>index.php hoặc header.php</strong> tùy theo sở thích của bạn và chèn code sau vào để hiển thị 2 menu ra ngoài theme.</p>
<div>
<div id="highlighter_782190" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;?php wp_nav_menu( </code><code class="php keyword">array</code><code class="php plain">( </code><code class="php comments">// Hiển thị menu Desktop</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php string">'theme_location'</code> <code class="php plain">=&gt; </code><code class="php string">'main-menu'</code><code class="php plain">,</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php string">'container'</code> <code class="php plain">=&gt; </code><code class="php string">'nav'</code><code class="php plain">,</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php string">'container_class'</code> <code class="php plain">=&gt; </code><code class="php string">'main-menu'</code></div>
<div class="line number5 index4 alt2"><code class="php spaces"> </code><code class="php plain">) ); ?&gt;</code></div>
<div class="line number6 index5 alt1"><code class="php plain">&lt;?php wp_nav_menu( </code><code class="php keyword">array</code><code class="php plain">( </code><code class="php comments">// Hiển thị menu di động</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">        </code><code class="php string">'theme_location'</code> <code class="php plain">=&gt; </code><code class="php string">'mobile-menu'</code><code class="php plain">,</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">        </code><code class="php string">'container'</code> <code class="php plain">=&gt; </code><code class="php string">'nav'</code><code class="php plain">,</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">        </code><code class="php string">'container_class'</code> <code class="php plain">=&gt; </code><code class="php string">'mobile-menu'</code></div>
<div class="line number10 index9 alt1"><code class="php spaces"> </code><code class="php plain">) ); ?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Kết quả ta tạm có là cả hai menu sẽ hiển thị ra theme, đừng lo vì ta sẽ cho nó ẩn sau. Nhìn sơ cấu trúc một menu thì ta sẽ có code dạng như sau:</p>
<div>
<div id="highlighter_642463" class="syntaxhighlighter  xml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">nav</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"main-menu"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">ul</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"menu-menu"</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"menu"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">li</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"menu-item-6"</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"menu-item menu-item-type-custom menu-item-object-custom menu-item-6"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"#"</code><code class="xml plain">&gt;Trang chủ&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;&lt;/</code><code class="xml keyword">li</code><code class="xml plain">&gt;</code></div>
<div class="line number2 index1 alt1"><code class="xml plain">&lt;</code><code class="xml keyword">li</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"menu-item-7"</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-7"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"#"</code><code class="xml plain">&gt;Category&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;</code></div>
<div class="line number3 index2 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">ul</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"sub-menu"</code><code class="xml plain">&gt;</code></div>
<div class="line number4 index3 alt1"><code class="xml spaces">        </code><code class="xml plain">&lt;</code><code class="xml keyword">li</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"menu-item-8"</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"menu-item menu-item-type-custom menu-item-object-custom menu-item-8"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"#"</code><code class="xml plain">&gt;WordPress&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;&lt;/</code><code class="xml keyword">li</code><code class="xml plain">&gt;</code></div>
<div class="line number5 index4 alt2"><code class="xml spaces">        </code><code class="xml plain">&lt;</code><code class="xml keyword">li</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"menu-item-9"</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"menu-item menu-item-type-custom menu-item-object-custom menu-item-9"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"#"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"http://thachpham.com/seo/tim-hieu-ve-seo.html"</code> <code class="xml color1">title</code><code class="xml plain">=</code><code class="xml string">"SEO"</code><code class="xml plain">&gt;SEO&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;&lt;/</code><code class="xml keyword">li</code><code class="xml plain">&gt;</code></div>
<div class="line number6 index5 alt1"><code class="xml plain">&lt;/</code><code class="xml keyword">ul</code><code class="xml plain">&gt;</code></div>
<div class="line number7 index6 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">li</code><code class="xml plain">&gt;</code></div>
<div class="line number8 index7 alt1"><code class="xml plain">&lt;</code><code class="xml keyword">li</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"menu-item-11"</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"menu-item menu-item-type-custom menu-item-object-custom menu-item-11"</code><code class="xml plain">&gt;&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"#"</code><code class="xml plain">&gt;Contact&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;&lt;/</code><code class="xml keyword">li</code><code class="xml plain">&gt;</code></div>
<div class="line number9 index8 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">ul</code><code class="xml plain">&gt;&lt;/</code><code class="xml keyword">nav</code><code class="xml plain">&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Tương tự với menu dành cho mobile thì ta sẽ có một cái khung container bằng thẻ nav với class là <strong>mobile-menu</strong> bọc lại nó để sau này chúng ta dễ dàng viết CSS.</p>
<h4>2.3) Viết CSS Dropdown menu</h4>
<p>Ở bước này chúng ta sẽ tiến hành viết CSS cho cái Main Menu, tức là menu để hiển thị ở màn hình desktop mang class là <strong>main-menu</strong>. Dĩ nhiên là CSS bạn sẽ viết vào trong file <strong>style.css</strong></p>
<p>Trước tiên là ta cần viết một chút CSS để định hình dáng của cái menu đã.</p>
<div>
<div id="highlighter_560535" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
<div class="line number29 index28 alt2">29</div>
<div class="line number30 index29 alt1">30</div>
<div class="line number31 index30 alt2">31</div>
<div class="line number32 index31 alt1">32</div>
<div class="line number33 index32 alt2">33</div>
<div class="line number34 index33 alt1">34</div>
<div class="line number35 index34 alt2">35</div>
<div class="line number36 index35 alt1">36</div>
<div class="line number37 index36 alt2">37</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css comments">/* CSS for Dropdown Menu */</code></div>
<div class="line number2 index1 alt1"><code class="css plain">.main-menu {</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css keyword">background</code><code class="css plain">: </code><code class="css value">#3C8BE0</code><code class="css plain">;</code></div>
<div class="line number4 index3 alt1"><code class="css spaces">        </code><code class="css keyword">border</code><code class="css plain">: </code><code class="css value">1px</code> <code class="css value">solid</code> <code class="css value">#2082C4</code><code class="css plain">;</code></div>
<div class="line number5 index4 alt2"><code class="css spaces">        </code><code class="css keyword">margin</code><code class="css plain">: </code><code class="css value">2em</code> <code class="css value">0em</code><code class="css plain">;</code></div>
<div class="line number6 index5 alt1"><code class="css plain">}</code></div>
<div class="line number7 index6 alt2"><code class="css plain">.main-menu ul, .main-menu li {</code></div>
<div class="line number8 index7 alt1"><code class="css spaces">        </code><code class="css keyword">display</code><code class="css plain">: inline-</code><code class="css value">block</code><code class="css plain">;</code></div>
<div class="line number9 index8 alt2"><code class="css spaces">        </code><code class="css keyword">list-style-type</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">;</code></div>
<div class="line number10 index9 alt1"><code class="css plain">}</code></div>
<div class="line number11 index10 alt2"><code class="css plain">.main-menu ul li a, .main-menu ul li .sub-menu {</code></div>
<div class="line number12 index11 alt1"><code class="css spaces">        </code><code class="css keyword">text-decoration</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">;</code></div>
<div class="line number13 index12 alt2"><code class="css spaces">        </code><code class="css keyword">color</code><code class="css plain">: </code><code class="css value">#fff</code><code class="css plain">;</code></div>
<div class="line number14 index13 alt1"><code class="css spaces">        </code><code class="css keyword">display</code><code class="css plain">: inline-</code><code class="css value">block</code><code class="css plain">;</code></div>
<div class="line number15 index14 alt2"><code class="css spaces">        </code><code class="css keyword">margin</code><code class="css plain">: </code><code class="css value">0</code> <code class="css value">10px</code><code class="css plain">;</code></div>
<div class="line number16 index15 alt1"><code class="css plain">}</code></div>
<div class="line number17 index16 alt2"><code class="css plain">.main-menu li {</code></div>
<div class="line number18 index17 alt1"><code class="css spaces">        </code><code class="css keyword">position</code><code class="css plain">: </code><code class="css value">relative</code><code class="css plain">;</code></div>
<div class="line number19 index18 alt2"><code class="css spaces">        </code><code class="css keyword">padding</code><code class="css plain">: </code><code class="css value">0.8em</code><code class="css plain">;</code></div>
<div class="line number20 index19 alt1"><code class="css plain">}</code></div>
<div class="line number21 index20 alt2"><code class="css plain">.main-menu ul li .sub-menu {</code></div>
<div class="line number22 index21 alt1"><code class="css spaces">        </code><code class="css keyword">position</code><code class="css plain">: </code><code class="css value">absolute</code><code class="css plain">;</code></div>
<div class="line number23 index22 alt2"><code class="css spaces">        </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">;</code></div>
<div class="line number24 index23 alt1"><code class="css spaces">        </code><code class="css keyword">top</code><code class="css plain">: </code><code class="css value">32px</code><code class="css plain">;</code></div>
<div class="line number25 index24 alt2"><code class="css spaces">        </code><code class="css keyword">width</code><code class="css plain">: </code><code class="css value">auto</code><code class="css plain">;</code></div>
<div class="line number26 index25 alt1"><code class="css spaces">        </code><code class="css keyword">background</code><code class="css plain">: </code><code class="css value">#3c8be0</code><code class="css plain">;</code></div>
<div class="line number27 index26 alt2"><code class="css plain">}</code></div>
<div class="line number28 index27 alt1"><code class="css plain">.main-menu ul li:hover .sub-menu{</code></div>
<div class="line number29 index28 alt2"><code class="css spaces">        </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">;</code></div>
<div class="line number30 index29 alt1"><code class="css plain">}</code></div>
<div class="line number31 index30 alt2"><code class="css plain">.main-menu .sub-menu li {</code></div>
<div class="line number32 index31 alt1"><code class="css spaces">        </code><code class="css keyword">padding</code><code class="css plain">: </code><code class="css value">5px</code> <code class="css value">0.5em</code><code class="css plain">;</code></div>
<div class="line number33 index32 alt2"><code class="css plain">}</code></div>
<div class="line number34 index33 alt1"><code class="css plain">.main-menu .sub-menu a {</code></div>
<div class="line number35 index34 alt2"><code class="css spaces">        </code><code class="css keyword">padding</code><code class="css plain">: </code><code class="css value">10px</code><code class="css plain">;</code></div>
<div class="line number36 index35 alt1"><code class="css spaces">        </code><code class="css keyword">margin</code><code class="css plain">: </code><code class="css value">0</code><code class="css plain">;</code></div>
<div class="line number37 index36 alt2"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Kết quả ta sẽ có một dropdow menu khá đơn giản, nhớ là hãy bỏ thêm các item con vào menu để test nhé.</p>
<p><img class="aligncenter size-full wp-image-17179" style="opacity: 1;" title="Hướng dẫn tạo Menu hỗ trợ Responsive cho site WordPress" src="/images/post/2014/09/30/05//responsivemenu-dropdownmenu.png" alt="responsivemenu dropdownmenu Tạo Menu hỗ trợ Responsive cho các site chạy WordPress" width="296" height="148" /></p>
<p>&nbsp;</p>
<h4>2.4) Ẩn/Hiện menu ở từng thiết bị</h4>
<p>Do chúng ta sẽ sử dụng hai menu khác nhau nên sẽ cần cho ẩn/hiện các menu vào đúng thời điểm, cụ thể:</p>
<ul>
<li><strong>Màn hình di động</strong>: Ẩn Main Menu, hiện Mobile Menu.</li>
<li><strong>Màn hình desktop</strong>: Ẩn Mobile Menu, hiện Main Menu.</li>
</ul>
<p>Chúng ta sẽ làm điều đó bằng cách viết các dòng CSS sau đây vào file <strong>style.css</strong></p>
<div>
<div id="highlighter_193332" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css comments">/* CSS for show/hide menu on each device */</code></div>
<div class="line number2 index1 alt1"><code class="css plain">@media </code><code class="css value">all</code> <code class="css plain">and (</code><code class="css keyword">max-width</code><code class="css plain">: </code><code class="css value">1023px</code><code class="css plain">) { </code><code class="css comments">/* CSS cho thiết bị di động */</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css plain">.main-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number4 index3 alt1"><code class="css spaces">        </code><code class="css plain">.mobile-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number5 index4 alt2"><code class="css plain">}</code></div>
<div class="line number6 index5 alt1"><code class="css plain">@media </code><code class="css value">all</code> <code class="css plain">and (</code><code class="css keyword">min-width</code><code class="css plain">: </code><code class="css value">1024px</code><code class="css plain">) { </code><code class="css comments">/* CSS cho thiết bị desktop */</code></div>
<div class="line number7 index6 alt2"><code class="css spaces">        </code><code class="css plain">.main-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number8 index7 alt1"><code class="css spaces">        </code><code class="css plain">.mobile-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number9 index8 alt2"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Bây giờ hãy thử co giãn trình duyệt xem menu có ẩn/hiện như ý muốn không cái đã nhé.</p>
<h4>2.5) Làm menu cho di động</h4>
<p>Đầu tiên bạn tải plugin Sidr về tại đây, giải nén ra và copy file jquery.sidr.min.js và thư mục stylesheets vào thư mục theme bạn đang dùng.</p>
<p>Sau đó chèn đoạn sau vào file <strong>functions.php</strong> để nhúng file Javascript và CSS của nó vào:</p>
<div>
<div id="highlighter_989310" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">function</code> <code class="php plain">sidr() {</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php plain">wp_enqueue_script( </code><code class="php string">'sidr-script'</code><code class="php plain">, get_template_directory_uri().</code><code class="php string">"/jquery.sidr.min.js"</code><code class="php plain">, </code><code class="php keyword">array</code><code class="php plain">(</code><code class="php string">'jquery'</code><code class="php plain">), true );</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php plain">wp_enqueue_style( </code><code class="php string">'sidr-style'</code><code class="php plain">, get_template_directory_uri().</code><code class="php string">"/stylesheets/jquery.sidr.dark.css"</code> <code class="php plain">);</code></div>
<div class="line number4 index3 alt1"><code class="php plain">}</code></div>
<div class="line number5 index4 alt2"><code class="php plain">add_action( </code><code class="php string">'wp_enqueue_scripts'</code><code class="php plain">, </code><code class="php string">'sidr'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Hãy chắc chắn là theme bạn đã có chèn jQuery vào, nếu bạn không chắc là có jQuery chưa thì chèn đoạn sau vào file <strong>functions.php</strong> để nhúng jQuery:</p>
<div>
<div id="highlighter_12185" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">if</code> <code class="php plain">(!is_admin()) add_action(</code><code class="php string">"wp_enqueue_scripts"</code><code class="php plain">, </code><code class="php string">"my_jquery_enqueue"</code><code class="php plain">, 11);</code></div>
<div class="line number2 index1 alt1"><code class="php keyword">function</code> <code class="php plain">my_jquery_enqueue() {</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">   </code><code class="php plain">wp_deregister_script(</code><code class="php string">'jquery'</code><code class="php plain">);</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">   </code><code class="php plain">wp_register_script(</code><code class="php string">'jquery'</code><code class="php plain">, </code><code class="php string">"http"</code> <code class="php plain">. (</code><code class="php variable">$_SERVER</code><code class="php plain">[</code><code class="php string">'SERVER_PORT'</code><code class="php plain">] == 443 ? </code><code class="php string">"s"</code> <code class="php plain">: </code><code class="php string">""</code><code class="php plain">) . </code><code class="php string">"://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"</code><code class="php plain">, false, null);</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">   </code><code class="php plain">wp_enqueue_script(</code><code class="php string">'jquery'</code><code class="php plain">);</code></div>
<div class="line number6 index5 alt1"><code class="php plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Sau đó mở file <strong>header.php</strong>, tìm:</p>
<div>
<div id="highlighter_456645" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;?php wp_nav_menu( </code><code class="php keyword">array</code><code class="php plain">( </code><code class="php comments">// Hiển thị menu di động</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php string">'theme_location'</code> <code class="php plain">=&gt; </code><code class="php string">'mobile-menu'</code><code class="php plain">,</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php string">'container'</code> <code class="php plain">=&gt; </code><code class="php string">'nav'</code><code class="php plain">,</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php string">'container_class'</code> <code class="php plain">=&gt; </code><code class="php string">'mobile-menu'</code></div>
<div class="line number5 index4 alt2"><code class="php spaces"> </code><code class="php plain">) ); ?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thay thành</p>
<div>
<div id="highlighter_377826" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">&lt;a id=</code><code class="php string">"show-menu"</code> <code class="php plain">href=</code><code class="php string">"#sidr"</code><code class="php plain">&gt;Menu&lt;/a&gt;</code></div>
<div class="line number2 index1 alt1"><code class="php plain">&lt;?php wp_nav_menu( </code><code class="php keyword">array</code><code class="php plain">( </code><code class="php comments">// Hiển thị menu di động</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php string">'theme_location'</code> <code class="php plain">=&gt; </code><code class="php string">'mobile-menu'</code><code class="php plain">,</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php string">'container'</code> <code class="php plain">=&gt; </code><code class="php string">'nav'</code><code class="php plain">,</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">        </code><code class="php string">'container_class'</code> <code class="php plain">=&gt; </code><code class="php string">'mobile-menu'</code><code class="php plain">,</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">        </code><code class="php string">'container_id'</code> <code class="php plain">=&gt; </code><code class="php string">'sidr'</code></div>
<div class="line number7 index6 alt2"><code class="php spaces"> </code><code class="php plain">) ); ?&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Mục đích ở đây là ta thêm một thẻ a tên là Menu vào để bạn có thể click vào cho nó hiển thị menu và thay class, thêm ID vào menu cho phù hợp với yêu cầu của plugin Sidr.</p>
<p>Sau đó mở file <strong>style.css</strong> tìm</p>
<div>
<div id="highlighter_218740" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">@media </code><code class="css value">all</code> <code class="css plain">and (</code><code class="css keyword">max-width</code><code class="css plain">: </code><code class="css value">1023px</code><code class="css plain">) { </code><code class="css comments">/* CSS cho thiết bị di động */</code></div>
<div class="line number2 index1 alt1"><code class="css spaces">        </code><code class="css plain">.main-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css plain">.mobile-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number4 index3 alt1"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thay thành</p>
<div>
<div id="highlighter_822687" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">@media </code><code class="css value">all</code> <code class="css plain">and (</code><code class="css keyword">max-width</code><code class="css plain">: </code><code class="css value">1023px</code><code class="css plain">) { </code><code class="css comments">/* CSS cho thiết bị di động */</code></div>
<div class="line number2 index1 alt1"><code class="css spaces">        </code><code class="css plain">.main-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css plain">.mobile-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number4 index3 alt1"><code class="css spaces">        </code><code class="css plain">#show-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number5 index4 alt2"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Tìm tiếp</p>
<div>
<div id="highlighter_421690" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">@media </code><code class="css value">all</code> <code class="css plain">and (</code><code class="css keyword">min-width</code><code class="css plain">: </code><code class="css value">1024px</code><code class="css plain">) { </code><code class="css comments">/* CSS cho thiết bị desktop */</code></div>
<div class="line number2 index1 alt1"><code class="css spaces">        </code><code class="css plain">.main-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css plain">.mobile-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number4 index3 alt1"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thay thành</p>
<div>
<div id="highlighter_932477" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">@media </code><code class="css value">all</code> <code class="css plain">and (</code><code class="css keyword">min-width</code><code class="css plain">: </code><code class="css value">1024px</code><code class="css plain">) { </code><code class="css comments">/* CSS cho thiết bị desktop */</code></div>
<div class="line number2 index1 alt1"><code class="css spaces">        </code><code class="css plain">.main-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css plain">.mobile-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number4 index3 alt1"><code class="css spaces">        </code><code class="css plain">#show-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">; }</code></div>
<div class="line number5 index4 alt2"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Sau đó mở file <strong>functions.php</strong> và thêm tiếp đoạn dưới đây để kích hoạt plugin Sidr để làm việc với menu:</p>
<div>
<div id="highlighter_48436" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">function</code> <code class="php plain">sidr_script() {</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php functions">echo</code> <code class="php plain">"</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">                </code><code class="php plain">&lt;script&gt;</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">                        </code><code class="php plain">$(document).ready(</code><code class="php keyword">function</code><code class="php plain">() {</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">                          </code><code class="php plain">$(</code><code class="php string">'#show-menu'</code><code class="php plain">).sidr();</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">                        </code><code class="php plain">});</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">                </code><code class="php plain">&lt;/script&gt;</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">        </code><code class="php plain">";</code></div>
<div class="line number9 index8 alt2"><code class="php plain">}</code></div>
<div class="line number10 index9 alt1"><code class="php plain">add_action(</code><code class="php string">'wp_head'</code><code class="php plain">, </code><code class="php string">'sidr_script'</code><code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Bây giờ hãy thử ra lại ngoài theme, thu nhỏ cửa sổ trình duyệt và ấn vào chữ Menu xem nó có hiện ra như thế này chưa:</p>
<p><img class="aligncenter size-full wp-image-17183" style="opacity: 1;" title="Hướng dẫn tạo Menu hỗ trợ Responsive cho site WordPress" src="/images/post/2014/09/30/05//responsivemenu-menumobile.jpg" alt="responsivemenu menumobile Tạo Menu hỗ trợ Responsive cho các site chạy WordPress" width="614" height="324" /></p>
<p>Nếu đã hiện ra thì coi như bạn làm thành công, nếu chưa thì hãy xem lại phần này và làm cho kỹ nhé.</p>
<p>Bây giờ ta viết thêm một xíu CSS đơn giản cho nút menu để nó nổi bật tí nha. Mở file <strong>style.css</strong> tìm</p>
<div>
<div id="highlighter_475082" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">#show-menu { </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">; }</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thay thành</p>
<div>
<div id="highlighter_894506" class="syntaxhighlighter  css">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="css plain">#show-menu {</code></div>
<div class="line number2 index1 alt1"><code class="css spaces">        </code><code class="css keyword">display</code><code class="css plain">: </code><code class="css value">block</code><code class="css plain">;</code></div>
<div class="line number3 index2 alt2"><code class="css spaces">        </code><code class="css keyword">background</code><code class="css plain">: </code><code class="css value">#3679CF</code><code class="css plain">;</code></div>
<div class="line number4 index3 alt1"><code class="css spaces">        </code><code class="css keyword">color</code><code class="css plain">: </code><code class="css value">#FFF</code><code class="css plain">;</code></div>
<div class="line number5 index4 alt2"><code class="css spaces">        </code><code class="css keyword">width</code><code class="css plain">: </code><code class="css value">auto</code><code class="css plain">;</code></div>
<div class="line number6 index5 alt1"><code class="css spaces">        </code><code class="css keyword">padding</code><code class="css plain">: </code><code class="css value">10px</code><code class="css plain">;</code></div>
<div class="line number7 index6 alt2"><code class="css spaces">        </code><code class="css keyword">text-align</code><code class="css plain">: </code><code class="css value">center</code><code class="css plain">;</code></div>
<div class="line number8 index7 alt1"><code class="css spaces">        </code><code class="css keyword">text-decoration</code><code class="css plain">: </code><code class="css value">none</code><code class="css plain">;</code></div>
<div class="line number9 index8 alt2"><code class="css spaces">        </code><code class="css keyword">text-transform</code><code class="css plain">: </code><code class="css value">uppercase</code><code class="css plain">;</code></div>
<div class="line number10 index9 alt1"><code class="css plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Xong xuôi hoàn tất. Bây giờ ta đã có một cái menu Responsive đơn giản rồi <img class="wp-smiley" style="opacity: 1;" title="Hướng dẫn tạo Menu hỗ trợ Responsive cho site WordPress" src="/images/post/2014/09/30/05//icon_biggrin.gif" alt="icon biggrin Tạo Menu hỗ trợ Responsive cho các site chạy WordPress"  /></p>
<p><img class="aligncenter size-full wp-image-17184" style="opacity: 1;" title="Hướng dẫn tạo Menu hỗ trợ Responsive cho site WordPress" src="/images/post/2014/09/30/05//responsivemenu-finish.jpg" alt="responsivemenu finish Tạo Menu hỗ trợ Responsive cho các site chạy WordPress" width="604" height="114" /></p>
<p>&nbsp;</p>
<p>Mọi người đừng hỏi tại sao nó xấu thế nha, đẹp hay không là do bạn thôi. Hãy dùng kiến thức CSS của chính mình để tự làm một menu mang phong cách của mình nhé. Còn cơ bản thì ở bài này mình đã hướng dẫn bạn cách thức làm một menu Responsive sử dụng Sidr là như thế nào.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hobaohuy.com/tao-menu-ho-tro-responsive-cho-cac-site-chay-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Làm sao để sử dụng đúng cách AJAX trong WordPress</title>
		<link>http://www.hobaohuy.com/lam-sao-de-su-dung-dung-cach-ajax-trong-wordpress.html</link>
		<comments>http://www.hobaohuy.com/lam-sao-de-su-dung-dung-cach-ajax-trong-wordpress.html#comments</comments>
		<pubDate>Tue, 30 Sep 2014 05:34:28 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Phát Triển WordPress]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[wordpress api]]></category>

		<guid isPermaLink="false">http://www.hobaohuy.com/?p=114</guid>
		<description><![CDATA[Chào các bạn, trong việc phát triển Theme và Plugin thì chắc hẳn ít nhiều các bạn cũng có sử dụng thêm AJAX. Cách thường dùng là chúng ta sẽ tạo ra các file php để xử lý request từ AJAX. Cách này khá mất công khi chúng ta vừa phải tạo mới file, vừa phải]]></description>
				<content:encoded><![CDATA[<p>Chào các bạn, trong việc phát triển Theme và Plugin thì chắc hẳn ít nhiều các bạn cũng có sử dụng thêm AJAX. Cách thường dùng là chúng ta sẽ tạo ra các file php để xử lý request từ AJAX. Cách này khá mất công khi chúng ta vừa phải tạo mới file, vừa phải include các file cần thiết để có thể tương tác và sử dụng được hàm WordPress. Cách này tuy vẫn đáp ứng được nhưng không khuyến khích dùng. Vì thế trong bài viết này mình sẽ hướng dẫn các bạn cách sử dụng AJAX trong WordPress đúng cách hơn.</p>
<p><img class="size-full" style="opacity: 1;" title="Hướng dẫn sử dụng AJAX trong WordPress đúng cách" src="/images/post/2014/09/30/05//ajax-trong-wordpress.jpg" alt="ajax trong wordpress Làm sao để sử dụng đúng cách AJAX trong WordPress " width="550" height="300" /></p>
<p>Việc sử dụng AJAX trong WordPress rất đơn giản. Các bạn không cần phải tạo ra bất kỳ file nào để xử lý request từ AJAX mà sử dụng chính <strong>file admin-AJAX.php</strong> trong <strong>thư mục wp-admin</strong> để xử lý thông qua 2 hook mà WordPress đã cung cấp sẵn: <strong>wp_AJAX_{action}</strong> và <strong>wp_AJAX_nopriv_{action}</strong>.</p>
<p><strong>Xem thêm</strong>: Action &amp; Filter trong WordPress</p>
<p>Hook<strong> wp_AJAX_{action}</strong> áp dụng khi người dùng đã đăng nhập và <strong>hook wp_AJAX_nopriv_{action}</strong> áp dụng khi người dùng không đăng nhập.</p>
<p>Để hiểu được cách sử dụng, các bạn làm theo ví dụ này của mình. Thêm đoạn code sau vào <strong>file functions.php</strong>:</p>
<div>
<div id="highlighter_121827" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php spaces">    </code><code class="php plain">add_action( </code><code class="php string">'wp_footer'</code><code class="php plain">, </code><code class="php string">'dvd_action_javascript'</code> <code class="php plain">);</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">    </code><code class="php keyword">function</code> <code class="php plain">dvd_action_javascript() {</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php plain">?&gt;&lt;script&gt;</code><code class="php comments">// &lt;![CDATA[</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php plain">jQuery(document).ready(</code><code class="php keyword">function</code><code class="php plain">($) {</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">            </code><code class="php plain">$.AJAX({</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">                </code><code class="php plain">type : </code><code class="php string">'POST'</code><code class="php plain">,</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">                </code><code class="php plain">data : {</code><code class="php string">'action'</code> <code class="php plain">: </code><code class="php string">'dvd_action'</code><code class="php plain">, </code><code class="php string">'data'</code> <code class="php plain">: </code><code class="php string">'du lieu gui len server'</code><code class="php plain">},</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">                </code><code class="php plain">url : </code><code class="php string">'&lt;?php echo admin_url( "admin-AJAX.php" ); ?&gt;'</code><code class="php plain">,</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">                </code><code class="php plain">success : </code><code class="php keyword">function</code> <code class="php plain">(resp){</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">                    </code><code class="php plain">console.log(resp);</code></div>
<div class="line number11 index10 alt2"><code class="php spaces">                </code><code class="php plain">}</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">            </code><code class="php plain">});</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">        </code><code class="php plain">});</code></div>
<div class="line number15 index14 alt2"><code class="php comments">// ]]&gt;&lt;/script&gt;&lt;!--?php</code></div>
<div class="line number16 index15 alt1"><code class="php spaces">    </code><code class="php plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Đoạn code trên đơn giản là sử dụng hàm AJAX để gửi request đến file xử lý (<em>/wp-admin/admin-AJAX.php</em>). Đoạn script trên sẽ được thêm vào footer của theme thông qua hook <strong>wp_footer</strong>. Các bạn có thể sử dụng bất kỳ hàm AJAX nào khác như post, get … của Jquery.</p>
<p>Các bạn lưu ý chỗ dữ liệu gửi đi, với action thì bắt buộc phải có để có thể sử dụng được 2 hook ở trên. Giá trị của action thì có để đặt tùy ý và giá trị này sẽ được thay vào {action} của 2 hook bên trên. Thêm tiếp đoạn code sau:</p>
<div>
<div id="highlighter_46950" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">add_action(</code><code class="php string">'wp_AJAX_dvd_action'</code><code class="php plain">, </code><code class="php string">'dvd_action'</code><code class="php plain">);</code></div>
<div class="line number2 index1 alt1"><code class="php plain">add_action(</code><code class="php string">'wp_AJAX_nopriv_dvd_action'</code><code class="php plain">, </code><code class="php string">'dvd_action'</code><code class="php plain">);</code></div>
<div class="line number3 index2 alt2"><code class="php keyword">function</code> <code class="php plain">dvd_action() {</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">    </code><code class="php functions">echo</code> <code class="php variable">$_POST</code><code class="php plain">[</code><code class="php string">'data'</code><code class="php plain">];</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">    </code><code class="php keyword">die</code><code class="php plain">();</code></div>
<div class="line number6 index5 alt1"><code class="php plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Các bạn để ý tên 2 hook bên trên. Với hook wp_AJAX_{action}, {action} là dvd_action. Tương tự với hook wp_AJAX_nopriv_{action}, {action} cũng là dvd_action do bên trên dữ liệu gửi đi mình đã khai báo với action là dvd_action. Các bạn thấy đấy, dựa vào action để nó có thể xác định được đúng request và xử lý chúng.</p>
<p>Trong hàm xử lý mình sẽ echo ra dữ liệu gửi lên từ AJAX và khi người dùng đăng nhập hay không đăng nhập thì hàm xử lý này vẫn sẽ hoạt động. Nếu muốn giới hạn thì các bạn có thể chọn 1 trong 2 hook trên cho phù hợp. Lưu ý: để nhận đúng kết quả trả về thì nên kết thúc hàm bằng hàm die(); hoặc exit();</p>
<p>Thử chạy và f12 lên xem kết quả nhé:</p>
<p><img class="size-full wp-image-17192" style="opacity: 1;" title="Hướng dẫn sử dụng AJAX trong WordPress đúng cách" src="/images/post/2014/09/30/05//ket-qua-tra-ve.png" alt="ket qua tra ve Làm sao để sử dụng đúng cách AJAX trong WordPress " width="716" height="109" /></p>
<p>Trong trường hợp các bạn muốn sử dụng đoạn script trên thông qua 1 file js thì cần phải đăng ký 1 biến global lưu đường dẫn tới file xử lý thông qua hàm sau:</p>
<div>
<div id="highlighter_476250" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">wp_localize_script( </code><code class="php variable">$handle</code><code class="php plain">, </code><code class="php variable">$name</code><code class="php plain">, </code><code class="php variable">$data</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Trong đó:</p>
<p>&#8211; $handle là tên script đã đăng ký</p>
<p>&#8211; $name là tên biến sẽ chứa dữ liệu</p>
<p>&#8211; $data là mảng chứa dữ liệu cho biến $name</p>
<p>Cụ thể hơn các bạn làm tiếp ví dụ sau sẽ hiểu:</p>
<p>Đoạn code xử lý AJAX ở trên vẫn giữ nguyên, mình sẽ thay đổi lại đoạn script thay vì dùng thông qua hook thì mình sẽ dùng thông qua 1 file js. Ở đây mình đặt tên là my_js.js và nó nằm trong thư mục js của theme. Trước hết mình đăng ký file my_js.js và 1 đối tượng lưu đường dẫn tới file xử lý:</p>
<div>
<div id="highlighter_314017" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">add_action(</code><code class="php string">'init'</code><code class="php plain">, </code><code class="php string">'dvd_enqueue_script'</code><code class="php plain">);</code></div>
<div class="line number2 index1 alt1"><code class="php keyword">function</code> <code class="php plain">dvd_enqueue_script(){</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">    </code><code class="php plain">wp_register_script(</code><code class="php string">'dvd_js'</code><code class="php plain">, get_template_directory_uri() . </code><code class="php string">'/js/my_js.js'</code><code class="php plain">, </code><code class="php keyword">array</code><code class="php plain">(</code><code class="php string">'jquery'</code><code class="php plain">), null, false);</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">    </code><code class="php plain">wp_localize_script(</code><code class="php string">'dvd_js'</code><code class="php plain">, </code><code class="php string">'AJAX'</code><code class="php plain">, </code><code class="php keyword">array</code><code class="php plain">(</code><code class="php string">'url'</code> <code class="php plain">=&gt; admin_url(</code><code class="php string">'admin-AJAX.php'</code><code class="php plain">)));</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">    </code><code class="php plain">wp_enqueue_script(</code><code class="php string">'dvd_js'</code><code class="php plain">);</code></div>
<div class="line number6 index5 alt1"><code class="php plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Sau khi đã đăng ký xong mình có thể lấy đường dẫn tới file xử lý trong my_js.js bằng cách sử dụng: AJAX.url:</p>
<div>
<div id="highlighter_475271" class="syntaxhighlighter  jscript">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="jscript plain">jQuery(document).ready(</code><code class="jscript keyword">function</code><code class="jscript plain">($) {</code></div>
<div class="line number2 index1 alt1"><code class="jscript spaces">    </code><code class="jscript plain">$.AJAX({</code></div>
<div class="line number3 index2 alt2"><code class="jscript spaces">        </code><code class="jscript plain">type : </code><code class="jscript string">'POST'</code><code class="jscript plain">,</code></div>
<div class="line number4 index3 alt1"><code class="jscript spaces">        </code><code class="jscript plain">data : {</code><code class="jscript string">'action'</code> <code class="jscript plain">: </code><code class="jscript string">'dvd_action'</code><code class="jscript plain">, </code><code class="jscript string">'data'</code> <code class="jscript plain">: </code><code class="jscript string">'du lieu gui len server'</code><code class="jscript plain">},</code></div>
<div class="line number5 index4 alt2"><code class="jscript spaces">        </code><code class="jscript plain">url : AJAX.url,</code></div>
<div class="line number6 index5 alt1"><code class="jscript spaces">        </code><code class="jscript plain">success : </code><code class="jscript keyword">function</code> <code class="jscript plain">(resp){</code></div>
<div class="line number7 index6 alt2"><code class="jscript spaces">            </code><code class="jscript plain">console.log(resp);</code></div>
<div class="line number8 index7 alt1"><code class="jscript spaces">        </code><code class="jscript plain">}</code></div>
<div class="line number9 index8 alt2"><code class="jscript spaces">    </code><code class="jscript plain">});</code></div>
<div class="line number10 index9 alt1"><code class="jscript plain">});</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Các bạn chạy lại và xem kết quả nhé. Vẫn y hệt kết quả như trước phải không nào?</p>
<p>Trường hợp các bạn sử dụng AJAX trong trang quản lý (dashboard) thì không cần phải khai báo đường dẫn tới file xử lý (admin-AJAX.php) nữa. Bởi vì WordPress đã cung cấp sẵn 1 biến global có tên AJAXurl lưu đường dẫn tới file xử lý rồi. Việc của chúng ta là lấy ra mà dùng thôi.</p>
<p>Thử luôn ví dụ cho các bạn dễ hiểu.</p>
<div>
<div id="highlighter_285565" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php spaces">    </code><code class="php plain">add_action( </code><code class="php string">'admin_footer'</code><code class="php plain">, </code><code class="php string">'dvd_action_javascript'</code> <code class="php plain">);</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">    </code><code class="php keyword">function</code> <code class="php plain">dvd_action_javascript() {</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php plain">?&gt;&lt;script&gt;</code><code class="php comments">// &lt;![CDATA[</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">        </code><code class="php plain">jQuery(document).ready(</code><code class="php keyword">function</code><code class="php plain">($) {</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">            </code><code class="php plain">$.AJAX({</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">                </code><code class="php plain">type : </code><code class="php string">'POST'</code><code class="php plain">,</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">                </code><code class="php plain">data : {</code><code class="php string">'action'</code> <code class="php plain">: </code><code class="php string">'dvd_action'</code><code class="php plain">, </code><code class="php string">'data'</code> <code class="php plain">: </code><code class="php string">'du lieu gui len server'</code><code class="php plain">},</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">                </code><code class="php plain">url : AJAXurl,</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">                </code><code class="php plain">success : </code><code class="php keyword">function</code> <code class="php plain">(resp){</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">                    </code><code class="php plain">console.log(resp);</code></div>
<div class="line number11 index10 alt2"><code class="php spaces">                </code><code class="php plain">}</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">            </code><code class="php plain">});</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">        </code><code class="php plain">});</code></div>
<div class="line number15 index14 alt2"><code class="php comments">// ]]&gt;&lt;/script&gt;&lt;?php }</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Mình dùng hook admin_footer để thêm 1 đoạn script vào footer của trang quản lý, các bạn có thể sử dụng file js riêng đều được. Nội dung đoạn code tương tự ví dụ trên chỉ khác chỗ option url thôi. Phần xử lý AJAX thông qua 2 hook bên trên các bạn vẫn giữ nguyên. Vào trang quản lý, f12 và kiểm tra kết quả nhé.</p>
<h3>Lời kết</h3>
<p>Mình đã hướng dẫn xong cách sử dụng AJAX trong WordPress. Hy vọng qua bài viết này các bạn có thể hiểu và biết cách vận dụng AJAX tốt hơn trong WordPress. Mọi vướng mắc các bạn có thể comment bên dưới để được sự hỗ trợ từ mọi người.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hobaohuy.com/lam-sao-de-su-dung-dung-cach-ajax-trong-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Loop (Vòng lặp trong WordPress) – Các tham số đặc biệt cần nhớ</title>
		<link>http://www.hobaohuy.com/wordpress-loop-vong-lap-trong-wordpress-cac-tham-so-dac-biet-can-nho.html</link>
		<comments>http://www.hobaohuy.com/wordpress-loop-vong-lap-trong-wordpress-cac-tham-so-dac-biet-can-nho.html#comments</comments>
		<pubDate>Tue, 30 Sep 2014 05:33:17 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Phát Triển WordPress]]></category>
		<category><![CDATA[wordpress api]]></category>
		<category><![CDATA[Wordpress Loop]]></category>
		<category><![CDATA[wordpress nâng cao]]></category>

		<guid isPermaLink="false">http://www.hobaohuy.com/?p=113</guid>
		<description><![CDATA[Như bạn đã biết thì trước đây mình đã có một bài cực kỳ chi tiết về WordPress Loop (Vòng lặp của WordPress) để bạn hiểu thêm về cách mà chúng ta sẽ cho hiển thị bài viết trong theme là như thế nào. Cũng từ bài đó, mình đã nhận được một số câu]]></description>
				<content:encoded><![CDATA[<p>Như bạn đã biết thì trước đây mình đã có một bài cực kỳ chi tiết về WordPress Loop (<strong>Vòng lặp của WordPress</strong>) để bạn hiểu thêm về cách mà chúng ta sẽ cho hiển thị bài viết trong theme là như thế nào. Cũng từ bài đó, mình đã nhận được một số câu hỏi liên quan về cách <strong>sử dụng các tham số như thế nào cho đúng</strong> và <strong>các tham số nào nên nhớ</strong> vì trong một Query nó có rất nhiều tham số khiến bạn phải choáng ngợp.<img class="decoded aligncenter" title="WordPress Loop (Vòng lặp) – Các tham số quan trọng cần nhớ" src="/images/post/2014/09/30/05//WordPress-loop.png" alt="WordPress loop WordPress Loop (Vòng lặp trong WordPress) – Các tham số đặc biệt cần nhớ"  /></p>
<p>Vậy thì ở trong bài này, mình sẽ giải thích kỹ hơn về các tham số quan trọng nhất mà bạn cần phải nhớ khi sử dụng WordPress Loop nhằm có thể “lôi” bài viết từ database ra theo đúng ý của mình.</p>
<h3>Về cách viết tham số</h3>
<p>Bạn có thể viết tham số theo dạng thế này nếu như chỉ dùng 1 hoặc 2 tham số.</p>
<div>
<div id="highlighter_331695" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query(</code><code class="php string">'posts_per_page=5&amp;s=wordpress'</code><code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Trong đó, dấu <strong>&amp;</strong> sẽ ngăn cách giữa các tham số với nhau.</p>
<p>Nhưng nếu bạn có nhiều tham số thì tốt nhất nên viết thành dạng thế này cho dễ quản lý:</p>
<div>
<div id="highlighter_595479" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$args</code> <code class="php plain">= </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php string">'posts_per_page'</code> <code class="php plain">=&gt; </code><code class="php string">'5'</code><code class="php plain">,</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">        </code><code class="php string">'s'</code> <code class="php plain">=&gt; </code><code class="php string">'wordpress'</code></div>
<div class="line number4 index3 alt1"><code class="php plain">);</code></div>
<div class="line number5 index4 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query(</code><code class="php variable">$args</code><code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Tức là ta sẽ khai báo nó vào một biến để sử dụng. Có một cách mình rất hay xài là tạo các biến này trong file nào đó rồi include vào file functions.php để dễ quản lý nếu theme có nhiều Query khác nhau.</p>
<h3>Các tham số thông dụng của WordPress Query</h3>
<h4>1. Tham số tùy chỉnh số lượng bài viết cần lấy</h4>
<p>Tham số này tên là <code>posts_per_page</code>. Giá trị của nó sẽ là một số tự nhiên và số này chỉnh là số bài viết cần hiển thị ra.</p>
<div>
<div id="highlighter_954363" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'posts_per_page=5'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h4>2. Tham số lấy bài viết từ một post type chỉ định</h4>
<p>Tham số này sẽ dùng nhiều nhất khi bạn sử dụng Custom Post Type để Loop nó có thể lấy các bài viết ra từ một post type nào đó. Có thể lấy ra từ nhiều post type khác nhau.</p>
<div>
<div id="highlighter_517699" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'post_type=sanpham'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Nếu muốn lấy bài từ nhiều post type một lúc thì bạn sẽ viết thế này:</p>
<div>
<div id="highlighter_429825" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php string">'post_type'</code> <code class="php plain">=&gt; </code><code class="php keyword">array</code><code class="php plain">( </code><code class="php string">'post'</code><code class="php plain">, </code><code class="php string">'page'</code><code class="php plain">, </code><code class="php string">'sanpham'</code> <code class="php plain">)</code></div>
<div class="line number3 index2 alt2"><code class="php plain">) );</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h4>3. Tham số bỏ qua các bài đăng sau nó</h4>
<p>Tham số này rất hữu dụng cho các bạn muốn làm trang tin tức khi sử dụng liên tiếp 2 loop với nhau, đó là bỏ qua các bài đăng sau nó bằng tham số <code>offset</code>.</p>
<div>
<div id="highlighter_177608" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'offset=3&amp;posts_per_page=4'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Đoạn trên nghĩa là nó sẽ hiển thị 4 bài nhưng loại trừ 3 bài mới nhất.</p>
<h4>4. Tham số bỏ qua Sticky Post</h4>
<p>Khi website bạn có gắn Sticky Post thì mặc định nó đều gọi ra trong Loop trong mọi trường hợp. Nếu bạn không muốn hiển thị sticky post ở một loop nào đó thì có thể sử dụng tham số <code>ignore_sticky_posts</code>.</p>
<div>
<div id="highlighter_695691" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'ignore_sticky_posts=1&amp;cat=4&amp;posts_per_page=-1'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Đoạn trên nghĩa là lấy toàn bộ bài viết (-1) trong category mang ID là 4 nhưng loại trừ sticky post trong category đó.</p>
<h4>5. Tham số lấy bài từ Category và Tag</h4>
<div>
<div id="highlighter_218761" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_loop</code> <code class="php plain">= WP_Query( </code><code class="php string">'tag=wordpress-co-ban&amp;cat=5'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Đoạn trên nghĩa là sẽ lấy các bài viết trong category mang ID là <strong>5</strong> có gắn tag là <strong>wordpress cơ bản</strong> (viết dưới dạng slug).</p>
<p>Ngoài ra, một số tham số liên quan tới tag là:</p>
<ul>
<li><code>tag</code> (string) – Sử dụng slug của tag.</li>
<li><code>tag_id</code> (int) – Sử dụng với định dạng ID.</li>
<li><code>tag__and</code> (array) – Lấy bài từ nhiều tag nhưng các bài đó sử dụng chung nhiều tag, sử dụng ID.</li>
<li><code>tag__in</code> (array) – Lấy bài từ nhiều tag khác nhau, sử dụng ID.</li>
<li><code>tag__not_in</code> (array) – Không lấy bài từ tag chỉ định, dùng ID.</li>
<li><code>tag_slug__and</code> (array) – Tương tự với <code>tag__and</code> nhưng dùng slug.</li>
<li><code>tag_slug__in</code> (array) – Tương tự với <code>tag__in</code> nhưng dùng slug.</li>
</ul>
<p>Tương tự với tag, category cũng có các tham số tương tự như vậy, tham khảo tại đây.</p>
<h4>6. Lấy bài theo ngày tháng</h4>
<p>Phần ngày tháng này là một trong những tham số khá quan trọng vì nó sẽ có thể giúp ích được cho bạn để giải quyết nhiều vấn đề. Chẳng hạn như bạn muốn lấy bài theo tháng, ngày, giờ, cuối tuần, mùa,…..Hoàn toàn có thể làm được trong tham số này.</p>
<div>
<div id="highlighter_246332" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$new_query</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'year=2014&amp;monthnum=06&amp;day=12'</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Ở đoạn trên là ta sẽ lấy bài trong ngày 12 tháng 6 năm 2014.</p>
<p>Nếu bạn cần lấy bài của ngày hôm nay ra thì có thể viết ở dạng như sau:</p>
<div>
<div id="highlighter_506275" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$today</code> <code class="php plain">= </code><code class="php functions">getdate</code><code class="php plain">();</code></div>
<div class="line number2 index1 alt1"><code class="php variable">$new_query</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'year='</code> <code class="php plain">. </code><code class="php variable">$today</code><code class="php plain">[</code><code class="php string">"year"</code><code class="php plain">] . </code><code class="php string">'&amp;monthnum='</code> <code class="php plain">. </code><code class="php variable">$today</code><code class="php plain">[</code><code class="php string">"mon"</code><code class="php plain">] . </code><code class="php string">'&amp;day='</code> <code class="php plain">. </code><code class="php variable">$today</code><code class="php plain">[</code><code class="php string">"mday"</code><code class="php plain">] );</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Hoặc lấy toàn bộ bài trong tuần này:</p>
<div>
<div id="highlighter_598128" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$week</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'W'</code><code class="php plain">);</code></div>
<div class="line number2 index1 alt1"><code class="php variable">$year</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'Y'</code><code class="php plain">);</code></div>
<div class="line number3 index2 alt2"><code class="php variable">$new_query</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php string">'year='</code> <code class="php plain">. </code><code class="php variable">$year</code> <code class="php plain">. </code><code class="php string">'&amp;w='</code> <code class="php plain">. </code><code class="php variable">$week</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Hoặc bạn cũng có thể lấy chi tiết bài trong thời gian nhất định của những ngày hành chính. Tức là <strong>từ 8h đến 17h từ thứ hai đến thứ sáu</strong>.</p>
<div>
<div id="highlighter_15837" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">01</div>
<div class="line number2 index1 alt1">02</div>
<div class="line number3 index2 alt2">03</div>
<div class="line number4 index3 alt1">04</div>
<div class="line number5 index4 alt2">05</div>
<div class="line number6 index5 alt1">06</div>
<div class="line number7 index6 alt2">07</div>
<div class="line number8 index7 alt1">08</div>
<div class="line number9 index8 alt2">09</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$args</code> <code class="php plain">= </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number2 index1 alt1"><code class="php spaces">        </code><code class="php string">'date_query'</code> <code class="php plain">=&gt; </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number3 index2 alt2"><code class="php spaces">                </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number4 index3 alt1"><code class="php spaces">                        </code><code class="php string">'hour'</code>      <code class="php plain">=&gt; 9,</code></div>
<div class="line number5 index4 alt2"><code class="php spaces">                        </code><code class="php string">'compare'</code>   <code class="php plain">=&gt; </code><code class="php string">'&gt;='</code><code class="php plain">,</code></div>
<div class="line number6 index5 alt1"><code class="php spaces">                </code><code class="php plain">),</code></div>
<div class="line number7 index6 alt2"><code class="php spaces">                </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number8 index7 alt1"><code class="php spaces">                        </code><code class="php string">'hour'</code>      <code class="php plain">=&gt; 17,</code></div>
<div class="line number9 index8 alt2"><code class="php spaces">                        </code><code class="php string">'compare'</code>   <code class="php plain">=&gt; </code><code class="php string">'&lt;='</code><code class="php plain">,</code></div>
<div class="line number10 index9 alt1"><code class="php spaces">                </code><code class="php plain">),</code></div>
<div class="line number11 index10 alt2"><code class="php spaces">                </code><code class="php keyword">array</code><code class="php plain">(</code></div>
<div class="line number12 index11 alt1"><code class="php spaces">                        </code><code class="php string">'dayofweek'</code> <code class="php plain">=&gt; </code><code class="php keyword">array</code><code class="php plain">( 2, 6 ),</code></div>
<div class="line number13 index12 alt2"><code class="php spaces">                        </code><code class="php string">'compare'</code>   <code class="php plain">=&gt; </code><code class="php string">'BETWEEN'</code><code class="php plain">,</code></div>
<div class="line number14 index13 alt1"><code class="php spaces">                </code><code class="php plain">),</code></div>
<div class="line number15 index14 alt2"><code class="php spaces">        </code><code class="php plain">),</code></div>
<div class="line number16 index15 alt1"><code class="php spaces">        </code><code class="php string">'posts_per_page'</code> <code class="php plain">=&gt; -1,</code></div>
<div class="line number17 index16 alt2"><code class="php plain">);</code></div>
<div class="line number18 index17 alt1"><code class="php variable">$new_query</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">WP_Query( </code><code class="php variable">$args</code> <code class="php plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Tham khảo thêm tại đây.</p>
<h3>Lời kết</h3>
<p>Ở bài trên chúng ta đã làm quen qua 6 tham số chính khá quan trọng trong việc sử dụng Query trong WordPress để lấy bài theo ý muốn. Thực tế sức mạnh của WordPress Query còn lớn hơn nhiều nếu bạn có khả năng sáng tạo tốt và áp dụng hết toàn bộ tinh hoa của WordPress.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hobaohuy.com/wordpress-loop-vong-lap-trong-wordpress-cac-tham-so-dac-biet-can-nho.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tăng cường tối đa tính bảo mật trong WordPress bằng Nonce</title>
		<link>http://www.hobaohuy.com/tang-cuong-toi-da-tinh-bao-mat-trong-wordpress-bang-nonce.html</link>
		<comments>http://www.hobaohuy.com/tang-cuong-toi-da-tinh-bao-mat-trong-wordpress-bang-nonce.html#comments</comments>
		<pubDate>Tue, 30 Sep 2014 05:31:46 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Phát Triển WordPress]]></category>
		<category><![CDATA[bảo mật]]></category>
		<category><![CDATA[wordpress api]]></category>

		<guid isPermaLink="false">http://www.hobaohuy.com/?p=112</guid>
		<description><![CDATA[Trong khi xây dựng 1 website thì vấn đề quan trọng không thể thiếu đó là bảo mật. Có rất nhiều cách để tăng cường tính bảo mật trong WordPress. Bạn Thạch cũng đã có bài viết về một số cách bảo mật trong WordPress. Các bạn có thể xem lại tại đây. Trong bài]]></description>
				<content:encoded><![CDATA[<p>Trong khi xây dựng 1 website thì vấn đề quan trọng không thể thiếu đó là bảo mật. Có rất nhiều cách để tăng cường tính bảo mật trong WordPress. Bạn Thạch cũng đã có bài viết về một số cách bảo mật trong WordPress. Các bạn có thể xem lại tại đây. Trong bài viết này mình sẽ hướng dẫn thêm cho các bạn cách <strong>bảo mật với</strong> <strong>Nonce</strong>, một cách hiệu quả để hạn chế việc tấn công theo kỹ thuật <strong>Cross Site Request Forgery</strong> <strong>(CSRF).</strong></p>
<p><img class="size-full  aligncenter" style="opacity: 1;" title="Sử dụng Nonce để tăng cường tính bảo mật trong WordPress" src="/images/post/2014/09/30/05//nonce-trong-wordpress.png" alt="nonce trong wordpress Tăng cường tối đa tính bảo mật trong WordPress bằng Nonce" width="588" height="330" /></p>
<h3>1. Nonce là gì?</h3>
<p>Hiểu đơn giản nó là 1 chuỗi duy nhất được tạo ra bởi WordPress cho mỗi người dùng. Nó giúp bảo vệ website khỏi những request tự tạo với mục đích xấu.</p>
<p>Ví dụ như thế này cho các bạn dễ hiểu. Giả sử mình có 1 link dùng để xóa bài viết như thế này:</p>
<div>
<div id="highlighter_408563" class="syntaxhighlighter  xml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">a</code> <code class="xml color1">href</code><code class="xml plain">=</code><code class="xml string">"http://domain/?action=delete&amp;id=1"</code><code class="xml plain">&gt;Xóa&lt;/</code><code class="xml keyword">a</code><code class="xml plain">&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Khi mình click vào link thì bài viết sẽ được xóa bình thường. Ok, không vấn đề gì. Nhưng vấn đề xảy ra nếu người dùng có dụng ý xấu. Họ sử dụng 1số thủ thuật nào đó để thông qua quyền của mình và thực hiện việc chạy lại đường link trên với 1 id khác thì sao? Bài viết khác có thể bị xóa cho dù mình không click vào nút xóa. Bây giờ các bạn đã thấy vấn đề rồi chứ. Ngoài ra thì khi dùng form để submit dữ liệu cũng vẫn bị vấn đề trên.</p>
<p>Vậy làm sao để xác định được chính xác 1 request do người dùng thực hiện thông qua click link hay submit form ?</p>
<p>Việc cần làm là chúng ta phải tạo ra thêm 1 nonce cho request và trang xử lý phải xác nhận cái nonce này. Nếu nonce không hợp lệ thì không xử lý request. Làm như vậy thì chúng ta mới xác định được chính xác thao tác đấy(click link, submit form) là thực sự của người dùng tạo ra.</p>
<h3>2. Các sử dụng</h3>
<p>Như đã nói ở trên nonce là 1 chuỗi vậy chuỗi này được tạo ra như thế nào? Mở <strong>file wp_config.php</strong> lên và tìm đến 2 hằng <strong>NONCE_KEY</strong> và <strong>AUTH_SALT</strong>. Các bạn thấy chưa ạ? Một dãy các ký tự đúng không nào? WordPress đã sử dụng dụng 2 hằng này và hash cùng với một số thông số khác sau như action, user id … sau đó cắt ra 1 đoạn để tạo ra nonce đấy.</p>
<p>Cách đơn giản và linh động nhất là các bạn sử dụng <strong>hàm wp_create_nonce($action)</strong> để tạo nonce và dùng <strong>hàm wp_verify_nonce($nonce, $action)</strong> để xác nhận.</p>
<p>Giả sử với link xóa bài như bên trên, mình cần tạo ra 1 nonce, đưa nonce này vào query string, bên trang xử lý sẽ xác nhận nonce thông qua query string.</p>
<div>
<div id="highlighter_525902" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$nonce</code> <code class="php plain">= wp_create_nonce(</code><code class="php string">' delete_1'</code><code class="php plain">); </code><code class="php comments">//tạo nonce</code></div>
<div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php string">'&lt;a href="http://domain/?action=delete&amp;id=1&amp;_nonce='</code><code class="php plain">.</code><code class="php variable">$nonce</code><code class="php plain">.</code><code class="php string">'"&gt;Xóa&lt;/a&gt;'</code><code class="php plain">; </code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Các bạn thấy đấy, mình đã tạo thêm 1 nonce với $action truyền vào là delete_1. Và mình đã đưa nó vào query string để verify bên trang xử lý. Tên _nonce các bạn có thể đổi lại tùy ý. Lưu ý: với $action các bạn đặt như thế nào thì trang xử lý các bạn phải verify lại như thế đó.</p>
<p>Bên trang xử lý các bạn chỉ cần xác nhận cái nonce này trước khi xử lý. Không hợp lệ thì ngưng xử lý:</p>
<div>
<div id="highlighter_142595" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">if</code><code class="php plain">(!wp_verify_nonce(</code><code class="php variable">$_GET</code><code class="php plain">[</code><code class="php string">'_nonce'</code><code class="php plain">], </code><code class="php string">'delete_'</code><code class="php plain">.</code><code class="php variable">$_GET</code><code class="php plain">[</code><code class="php string">'id'</code><code class="php plain">])) </code><code class="php functions">exit</code><code class="php plain">();</code></div>
<div class="line number3 index2 alt2"><code class="php comments">//code xử lý ở đây ....</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Bên trang xử lý chúng ta verify nonce thông qua <strong>hàm wp_verify_nonce</strong>. Với <strong>$nonce</strong> là $_GET[&#8216;_nonce&#8217;], và <strong>$action</strong> là ‘delete_’.$_GET[&#8216;id&#8217;]. Vì ở trên nonce được tạo từ ‘delete_1′ nên trang xử lý cần verify đúng $action đó theo dạng delete_{id}.</p>
<p>Thực chất hàm này sẽ tạo ra 1 nonce khác theo $action và so sánh nó với nonce get được.</p>
<p>Đơn giản thế thôi, ngoài cách sử dụng trên wordpress còn cung cấp các hàm để tạo và kiểm tra nonce khác để áp dụng vào từng trường hợp cụ thể.</p>
<p>Để tạo nonce cho url, ngoài cách trên ra chúng ta có thể sử dụng thêm <strong>hàm wp_nonce_url( $actionurl, $action, $name )</strong> hàm này sẽ trả về cho chúng ta 1 đường dẫn đầy đủ chứa nonce.</p>
<p>Tham số:</p>
<ul>
<li>$actionurl chính là đường dẫn để add nonce vào.</li>
<li>$action tương tự trên.</li>
<li>$name là tên của nonce, mặc định là _wpnonce</li>
</ul>
<p>Cũng với ví dụ trên mình sử dùng hàm <strong>wp_nonce_url()</strong> để tạo:</p>
<div>
<div id="highlighter_457962" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php variable">$nonce_url</code> <code class="php plain">= wp_nonce_url(</code><code class="php string">'http://domain/?action=delete&amp;id=1'</code><code class="php plain">, </code><code class="php string">'delete_1'</code><code class="php plain">);</code></div>
<div class="line number3 index2 alt2"><code class="php functions">echo</code> <code class="php string">'&lt;a href="'</code><code class="php plain">. </code><code class="php variable">$nonce_url</code><code class="php plain">.</code><code class="php string">' "&gt;Xóa&lt;/a&gt;'</code><code class="php plain">;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Khi xem thì các bạn thấy đường dẫn nó cũng tương tự cách trên, _wpnonce chính là tham số $name mặc định, các bạn muốn đổi thành tên khác thì tùy chỉnh tại tham số này.</p>
<div>
<div id="highlighter_884845" class="syntaxhighlighter  xml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">http://domain/?action=delete&amp;id=1&amp;_wpnonce=e73a52569c</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Tiếp tục để tạo nonce cho 1 form các bạn có thể dùng thêm <strong>hàm wp_nonce_field( $action, $name, $referer, $echo )</strong>. Các tham số như $action và $name thì tương tự trên. Tham số <strong>$referer</strong> sẽ nhận giá trị true hoặc false, quyết định hiển thị thêm 1 field ẩn chứa đường dẫn hiện tại. <strong>$echo</strong> cũng nhận giá trị true hoặc false, quyết định hàm <strong>wp_nonce_field()</strong> sẽ hiển thị hay trả về kết quả.</p>
<p>Khi sử dụng hàm này với <strong>$referer </strong>là true các bạn sẽ thấy trong form có thêm 2 trường dạng như thế này:</p>
<div>
<div id="highlighter_366965" class="syntaxhighlighter  xml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">input</code> <code class="xml color1">type</code><code class="xml plain">=</code><code class="xml string">"hidden"</code> <code class="xml color1">id</code><code class="xml plain">=</code><code class="xml string">"_nonce"</code> <code class="xml color1">name</code><code class="xml plain">=</code><code class="xml string">"_nonce"</code> <code class="xml color1">value</code><code class="xml plain">=</code><code class="xml string">"43bc8cf75e"</code> <code class="xml plain">/&gt;</code></div>
<div class="line number3 index2 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">input</code> <code class="xml color1">type</code><code class="xml plain">=</code><code class="xml string">"hidden"</code> <code class="xml color1">name</code><code class="xml plain">=</code><code class="xml string">"_wp_http_referer"</code> <code class="xml color1">value</code><code class="xml plain">=</code><code class="xml string">"/phanmem/ "</code> <code class="xml plain">/&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Về cách verify nonce thì WordPress cung cấp thêm cho chúng ta 2 hàm nữa khác là <strong>check_admin_referer()</strong> và <strong>check_ajax_referer()</strong>.</p>
<p>Hàm <strong>check_admin_referer() </strong>sẽ dùng để verify nonce trong trang quản lý. Hàm này nhận 2 tham số là <strong>$action</strong> và <strong>$query_arg</strong> với <strong>$action</strong> thì tương tự, <strong>$query_arg</strong> chính là <strong>$name</strong> của nonce. Hàm này sẽ trả về true nếu nonce hợp lệ và ngược lại là false.</p>
<p>Giả sử có 1 form dạng như thế này:</p>
<div>
<div id="highlighter_707774" class="syntaxhighlighter  xml">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain">&lt;</code><code class="xml keyword">form</code> <code class="xml color1">method</code><code class="xml plain">=</code><code class="xml string">"post"</code><code class="xml plain">&gt;</code></div>
<div class="line number3 index2 alt2"><code class="xml spaces">    </code><code class="xml plain">//.......</code></div>
<div class="line number5 index4 alt2"><code class="xml spaces">   </code><code class="xml plain">&lt;?</code><code class="xml keyword">php</code> <code class="xml plain">wp_nonce_field( 'myaction','mynonce' ); ?&gt;</code></div>
<div class="line number7 index6 alt2"><code class="xml plain">&lt;/</code><code class="xml keyword">form</code><code class="xml plain">&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Thì khi verify các bạn làm như sau:</p>
<div>
<div id="highlighter_878405" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php keyword">if</code><code class="php plain">(!check_admin_referer(</code><code class="php string">'myaction'</code><code class="php plain">, </code><code class="php string">'mynonce'</code><code class="php plain">)) </code><code class="php keyword">die</code><code class="php plain">();</code></div>
<div class="line number3 index2 alt2"><code class="php spaces"> </code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Hàm <strong>check_ajax_referer()</strong> sẽ verify nonce thông qua <strong>Ajax</strong>. Hàm này nhận 3 tham số, 2 tham số đầu là <strong>$action</strong> và <strong>$query_arg</strong> tương tự hàm trên, với tham số thứ 3 là <strong>$die,</strong> nếu nonce không hợp lệ, và tham số này set true thì sẽ ngưng xử lý, nếu false thì bỏ qua. Mặc định là true.</p>
<p>Thời gian sống mặc định của 1 nonce là 24 giờ. Các bạn vẫn có thể chỉnh sửa lại thông qua hook<strong> nonce_life</strong>.</p>
<div>
<div id="highlighter_133949" class="syntaxhighlighter  php">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="php plain">add_filter( </code><code class="php string">'nonce_life'</code><code class="php plain">, </code><code class="php keyword">function</code> <code class="php plain">() { </code><code class="php keyword">return</code> <code class="php plain">4 * HOUR_IN_SECONDS; } );</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>Hằng <strong>HOUR_IN_SECONDS </strong>sẽ trả về số giây trên giờ (3600).</p>
<h3>3. Lời kết</h3>
<p>Mình đã hướng dẫn xong cho các bạn cách bảo mật WordPress với <strong>Nonce</strong> để hạn chế việc tấn công theo kỹ thuật <strong>CSRF</strong> trong khi phát triển theme và plugin. Hy vọng với những kiến thức này có thể giúp các bạn bảo vệ website của mình tốt hơn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hobaohuy.com/tang-cuong-toi-da-tinh-bao-mat-trong-wordpress-bang-nonce.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
