<?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>comment_post &#8211; 記下來</title>
	<atom:link href="https://noter.tw/tag/comment_post/feed/" rel="self" type="application/rss+xml" />
	<link>https://noter.tw</link>
	<description>一路上踩到的坑、遇到的問題，一點一滴記下來，希望能幫助到需要的人~</description>
	<lastBuildDate>Sat, 07 Nov 2020 14:49:32 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.3</generator>

<image>
	<url>https://noter.tw/wp-content/uploads/cropped-old-1130742_1920-1-32x32.jpg</url>
	<title>comment_post &#8211; 記下來</title>
	<link>https://noter.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress 利用鉤子(Hooks)清除頁面快取</title>
		<link>https://noter.tw/6888/wordpress-%e5%88%a9%e7%94%a8%e9%89%a4%e5%ad%90hooks%e6%b8%85%e9%99%a4%e9%a0%81%e9%9d%a2%e5%bf%ab%e5%8f%96/</link>
					<comments>https://noter.tw/6888/wordpress-%e5%88%a9%e7%94%a8%e9%89%a4%e5%ad%90hooks%e6%b8%85%e9%99%a4%e9%a0%81%e9%9d%a2%e5%bf%ab%e5%8f%96/#comments</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Sun, 29 Dec 2019 09:55:15 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[網頁後端]]></category>
		<category><![CDATA[鉤子]]></category>
		<category><![CDATA[清除快取]]></category>
		<category><![CDATA[更新文章]]></category>
		<category><![CDATA[觸發]]></category>
		<category><![CDATA[程式]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[add_action]]></category>
		<category><![CDATA[wp_head]]></category>
		<category><![CDATA[transition_post_status]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[comment_post]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[hooks]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=6888</guid>

					<description><![CDATA[<p>記下來由於有使用快取的緣故，常常發文或有網友留言後頁面都不會更新，對於小蛙常常要測試修改一些東西的時候被快取誤導 Orz &#8230; 這篇記錄一下怎麼用 WordPress 內建的鉤子來解決這件事&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/6888/wordpress-%e5%88%a9%e7%94%a8%e9%89%a4%e5%ad%90hooks%e6%b8%85%e9%99%a4%e9%a0%81%e9%9d%a2%e5%bf%ab%e5%8f%96/" data-wpel-link="internal">WordPress 利用鉤子(Hooks)清除頁面快取</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>記下來由於有使用快取的緣故，常常發文或有網友留言後頁面都不會更新，對於小蛙常常要測試修改一些東西的時候被快取誤導 Orz &#8230; 這篇記錄一下怎麼用 WordPress 內建的鉤子來解決這件事情。</p>



<span id="more-6888"></span>



<p>有興趣了解更多的網友可以到 <a rel="noreferrer noopener nofollow external" aria-label="WordPress的Hook機制與原理 (在新分頁中開啟)" href="https://audilu.com/2011/10/10/wordpress-hook/" target="_blank" data-wpel-link="external" class="wpel-icon-right">WordPress的Hook機制與原理<span class="wpel-icon wpel-image wpel-icon-6"></span></a> 看看，小蛙直接進主題。</p>



<h2 class="wp-block-heading">什麼是鉤子（hooks）</h2>



<p>WordPress 有一種叫做鉤子的機制，在某些情況或條件發生的時候，去「鉤」起一連串相關要處理的功能，<a rel="noreferrer noopener nofollow external" aria-label="List of all WordPress hooks (在新分頁中開啟)" href="https://adambrown.info/p/wp_hooks/hook" target="_blank" data-wpel-link="external" class="wpel-icon-right">List of all WordPress hooks<span class="wpel-icon wpel-image wpel-icon-6"></span></a> 可以看到所有的鉤子列表。以上面的文章舉例，WordPress 載入網頁的時候會呼叫一個 wp_head() 來載入相對應 html head 的部份，如果我們希望在執行 wp_head 的時候額外多做一些事情，就可以在佈景主題下的 functions.php 加入</p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">add_action('wp_head', 'extra_act');
function  extra_act () {
   ... 要做的事情放在這裡 ...
} </pre>



<p>透過 add_action 來告訴 WordPress 說，當你執行到 wp_head 的時候，我要多掛上一件叫做 extra_act 的事情麻煩你一起處理，在 Drupal 也同樣存在 Hooks 的概念。知道鉤子是幹嘛的之後，就可以開始進行我們要做的事情了。</p>



<h2 class="wp-block-heading">查找能用的鉤子</h2>



<p>從 <a rel="noreferrer noopener nofollow external" href="https://adambrown.info/p/wp_hooks/hook" target="_blank" data-wpel-link="external" class="wpel-icon-right">List of all WordPress hooks<span class="wpel-icon wpel-image wpel-icon-6"></span></a> 可以查到可以用的鉤子，小蛙要的功能是當使用者留言之後，及小蛙的文章有變動的時候，把 pagespeed module 及 php 的快取清除，開始來找跟留言及文章變動有關的鉤子。</p>



<p class="withcode pink-solid">小蛙找到 <code>transition_post_status</code> 及 <code>comment_post</code> 這兩個鉤子，看起來符合需求，開始加工需要的功能</p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">// 加入文章狀態改變的鉤子
add_action('transition_post_status', 'post_changed');
function post_changed($new_status, $old_status=null, $post=null) {
    if('publish' == $new_status || 'publish' == $old_status){
        // 清除快取，小蛙是用 shell_exec 執行系統指令
    }
}</pre>



<p>文章新狀態是 &#8220;發布&#8221; 的情況下，以及舊狀態是 &#8220;發布&#8221; 的情況下才做清除快取，帶入到實際狀況就是文章從所有狀態轉成 &#8220;發布&#8221;，表示新發文章（無論從垃圾桶叫回來、草稿發布 &#8230;）都會符合新狀態為 &#8220;發布&#8221; 的情況。而舊狀態為 &#8220;發布&#8221; 的情況則是原本已發布的網頁，刪除或是轉換回草稿，都會符合舊狀態為 &#8220;發布&#8221; 的條件。</p>



<p>訪客留言部份程式碼如下，只要有新的留言進來，就會執行清除快取，讓留言的使用者可以馬上看到剛剛的留言～</p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">add_action('comment_post', 'comment_posted');
function comment_posted() {
     // 清除快取，小蛙是用 shell_exec 執行系統指令 
}</pre>



<p>到這邊就完成小蛙的需求囉！留個記錄給有需要的人～</p>



<p><strong>WordPress 5.0 系列：</strong></p>



<ul class="my-li bg-darkblue wp-block-list"><li><a href="https://noter.tw/446/wordpress-升級-5-0/" data-wpel-link="internal">WordPress 升級 5.0</a></li><li><a href="https://noter.tw/552/wordpress-5-0-區塊基本使用/" data-wpel-link="internal">WordPress 5.0 區塊基本使用</a></li><li><a href="https://noter.tw/569/wordpress-5-0-相關問題/" data-wpel-link="internal">WordPress 5.0 相關問題</a></li><li><a href="https://noter.tw/4262/%E5%BC%B7%E5%8C%96-wordpress-%E6%90%9C%E5%B0%8B%E5%8A%9F%E8%83%BD-search-filter-toolset-types/" data-wpel-link="internal">強化 WordPress 搜尋功能 – Search &amp; Filter + Toolset Types</a></li><li><a href="https://noter.tw/6888/wordpress-利用鉤子(hooks)清除頁面快取/" data-wpel-link="internal">WordPress 利用鉤子(Hooks)清除頁面快取</a></li></ul>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/6888/wordpress-%e5%88%a9%e7%94%a8%e9%89%a4%e5%ad%90hooks%e6%b8%85%e9%99%a4%e9%a0%81%e9%9d%a2%e5%bf%ab%e5%8f%96/" data-wpel-link="internal">WordPress 利用鉤子(Hooks)清除頁面快取</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/6888/wordpress-%e5%88%a9%e7%94%a8%e9%89%a4%e5%ad%90hooks%e6%b8%85%e9%99%a4%e9%a0%81%e9%9d%a2%e5%bf%ab%e5%8f%96/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
