<?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>網頁前端 &#8211; 記下來</title>
	<atom:link href="https://noter.tw/code/front-end/feed/" rel="self" type="application/rss+xml" />
	<link>https://noter.tw</link>
	<description>一路上踩到的坑、遇到的問題，一點一滴記下來，希望能幫助到需要的人~</description>
	<lastBuildDate>Mon, 24 Apr 2023 06:00:29 +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>網頁前端 &#8211; 記下來</title>
	<link>https://noter.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>加密的階段作業 (SSL) Cookie 中遺漏安全屬性</title>
		<link>https://noter.tw/11094/%e5%8a%a0%e5%af%86%e7%9a%84%e9%9a%8e%e6%ae%b5%e4%bd%9c%e6%a5%ad-ssl-cookie-%e4%b8%ad%e9%81%ba%e6%bc%8f%e5%ae%89%e5%85%a8%e5%b1%ac%e6%80%a7/</link>
					<comments>https://noter.tw/11094/%e5%8a%a0%e5%af%86%e7%9a%84%e9%9a%8e%e6%ae%b5%e4%bd%9c%e6%a5%ad-ssl-cookie-%e4%b8%ad%e9%81%ba%e6%bc%8f%e5%ae%89%e5%85%a8%e5%b1%ac%e6%80%a7/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 02:51:17 +0000</pubDate>
				<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[加密的階段作業 (SSL) Cookie 中遺漏安全屬性]]></category>
		<category><![CDATA[cookieFlags]]></category>
		<category><![CDATA[cookie secure]]></category>
		<category><![CDATA[_ga]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Google 分析]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=11094</guid>

					<description><![CDATA[<p>加密的階段作業 (SSL) Cookie 中遺漏安全屬性 。小蛙負責的網站必須要通過資訊安全相關掃描，否則就會被下架，因此每隔一段時間就會掃描一次看看有沒有什麼問題，通常都是掃出一些不大不小的問題，例如這個 加密的階段作業 (SSL) Cookie 中遺漏安全屬性。</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/11094/%e5%8a%a0%e5%af%86%e7%9a%84%e9%9a%8e%e6%ae%b5%e4%bd%9c%e6%a5%ad-ssl-cookie-%e4%b8%ad%e9%81%ba%e6%bc%8f%e5%ae%89%e5%85%a8%e5%b1%ac%e6%80%a7/" data-wpel-link="internal">加密的階段作業 (SSL) Cookie 中遺漏安全屬性</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>小蛙負責的網站必須要通過資訊安全相關掃描，否則就會被下架，因此每隔一段時間就會掃描一次看看有沒有什麼問題，通常都是掃出一些不大不小的問題，例如這個 <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">加密的階段作業 (SSL) Cookie 中遺漏安全屬性</mark></strong>。</p>



<span id="more-11094"></span>



<p>上一次掃出來的時候已經修正過了，這次加了一些功能後又出現，下圖是安全掃描報告，看到 _ga, _gid 之類的很快就知道是使用 Google 分析 (Google Analytics) 造成的。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AMWts8CpWO6L1Qe5Nsh4CCbvsy2_g-i-g0NuZANVGH6eae8A8LugZUn96qHAZeKNYKrp-QNQ69xJnuT9e_4BrR3GNOSy9RxUVNpU9YFrCm7Obj0aWSBglx7jyqL0bfYdDFNZc12PNmovWU7tfBs5oHy8XvMD=w800-h288-rw" alt="加密的階段作業 (SSL) Cookie 中遺漏安全屬性" title="加密的階段作業 (SSL) Cookie 中遺漏安全屬性"></figure></div>


<p>要修正這個嚴重性被標示為「中」的問題很簡單，只要到載入及初始化 Google 分析的部份，例如小蛙找到其中一個頁面 Google 分析的載入有這段</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ga('create', 'UA-xxxxxxxx-x', 'auto');</pre>



<p>這時候要用到 Google 分析提供的 cookieFlags，把上述設定改成 </p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ga('create', 'UA-xxxxxxxx-x', {'cookieFlags': 'SameSite=None; Secure'});</pre>



<p>就可以囉 ~ 更多 cookieFlags 的設定可參考：<a href="https://www.ichdata.com/cookieflags-field-google-" target="_blank" rel="noreferrer noopener ugc nofollow external" data-wpel-link="external" class="wpel-icon-right">Google Analytics设置cookieFlags &#8211; GA 小站analytics.html<span class="wpel-icon wpel-image wpel-icon-6"></span></a>，F12 看看設定前跟設定後的差別。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AMWts8Cq_ziC0VswS6rCRJKZYvWfV4uGDD9mzuNKwnj--5cGPj5aJVFlKFGXnHTAqmn6JsHYY4sVIXQNct366HaThiUPcTUfy44LqKj2D7IKnrVfmEYJk5Umm8s_ng41YtLw5uoJP9IipOvVKs6O8M2LmfyO=w1151-h117-rw" alt="cookieFlags secure 設定前" title="加密的階段作業 (SSL) Cookie 中遺漏安全屬性"><figcaption>cookieFlags secure 設定前</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AMWts8CEoTm4A21-ms2U2YLb7lzDJ7-x0LlwO20E_LIBk8pprJ0AHGoU_6JHjsAbbUsMbL_OLvX-5fW3BHKaPIZtpLfBBN-fCA7J78nzueG17knPiZXlhGM0N5bO_eKovzIKdAkFlEOJnY-bmJatVdhwTEuL=w1153-h117-rw" alt="cookieFlags secure 設定後" title="加密的階段作業 (SSL) Cookie 中遺漏安全屬性"><figcaption>cookieFlags secure 設定後</figcaption></figure>



<p>打完收工～！再次送掃！站上還有其他不錯的 <a href="https://noter.tw/category/share/trick/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">技巧分享</a> 喔～</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/11094/%e5%8a%a0%e5%af%86%e7%9a%84%e9%9a%8e%e6%ae%b5%e4%bd%9c%e6%a5%ad-ssl-cookie-%e4%b8%ad%e9%81%ba%e6%bc%8f%e5%ae%89%e5%85%a8%e5%b1%ac%e6%80%a7/" data-wpel-link="internal">加密的階段作業 (SSL) Cookie 中遺漏安全屬性</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/11094/%e5%8a%a0%e5%af%86%e7%9a%84%e9%9a%8e%e6%ae%b5%e4%bd%9c%e6%a5%ad-ssl-cookie-%e4%b8%ad%e9%81%ba%e6%bc%8f%e5%ae%89%e5%85%a8%e5%b1%ac%e6%80%a7/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>無法開啟 PHP ZipArchive 下載的 zip 檔</title>
		<link>https://noter.tw/10668/%e7%84%a1%e6%b3%95%e9%96%8b%e5%95%9f-php-ziparchive-%e4%b8%8b%e8%bc%89%e7%9a%84-zip-%e6%aa%94/</link>
					<comments>https://noter.tw/10668/%e7%84%a1%e6%b3%95%e9%96%8b%e5%95%9f-php-ziparchive-%e4%b8%8b%e8%bc%89%e7%9a%84-zip-%e6%aa%94/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Fri, 16 Dec 2022 13:19:02 +0000</pubDate>
				<category><![CDATA[網頁後端]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[技術相關]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ZipArchive]]></category>
		<category><![CDATA[PHP zip]]></category>
		<category><![CDATA[PHP 壓縮檔案]]></category>
		<category><![CDATA[ob_clean()]]></category>
		<category><![CDATA[網頁直接下載檔案]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=10668</guid>

					<description><![CDATA[<p>PHP 內有一個用來操控壓縮檔的 ZipArchive 模組，今天收到問題回報說下載的 zip 檔沒辦法開啟，當下直覺認為是對方操作錯誤，給幾個同事測試之後，有一個同事同樣無法開啟，竟然是因為檔頭多了一些空白造成，這篇記錄此問題的解法。</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/10668/%e7%84%a1%e6%b3%95%e9%96%8b%e5%95%9f-php-ziparchive-%e4%b8%8b%e8%bc%89%e7%9a%84-zip-%e6%aa%94/" data-wpel-link="internal">無法開啟 PHP ZipArchive 下載的 zip 檔</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>PHP 內有一個用來操控壓縮檔的 ZipArchive 模組，今天收到問題回報說下載的 zip 檔沒辦法開啟，當下直覺認為是對方操作錯誤，給幾個同事測試之後，有一個同事同樣無法開啟，竟然是因為檔頭多了一些空白造成，這篇記錄此問題的解法。</p>



<span id="more-10668"></span>



<h2 class="para wp-block-heading">PHP 壓縮檔案</h2>



<p>這邊是留給自己的 ZipArchive 用法的 memo，確定載入此模組後，只要使用以下方法就可以輕鬆把檔案壓縮成 zip</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 建立 ZipArchive 物件
$zip = new ZipArchive();
// 在指定路徑中建立一個 zip 檔
$res = $zip->open('tmp_callback/123.zip', ZipArchive::CREATE);
// 把 tmp_callback/file1 新增至 zip 內，並改名為 00000001.txt
$zip->addFile('tmp_callback/file1', '00000001.txt');
// 關閉 zip 物件
$zip->close();</pre>



<h2 class="para wp-block-heading">透過網頁下載 zip 檔</h2>



<p>透過以下的語法可以讓瀏覽器直接下載 zip 檔，一方面在之前做權限控管以及避免洩漏檔案真實路徑</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$path = "/var/www/html/uploads/";
$filename = '03082358.zip';
	
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($path . $filename));
@readfile($file);</pre>



<h2 class="para wp-block-heading">無法開啟壓縮檔的原因</h2>



<p>直到有使用者反應壓縮檔無法開啟，透過 <a href="https://unzip-online.com/en/zip" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">unzip-online.com<span class="wpel-icon wpel-image wpel-icon-6"></span></a> 線上解壓縮也失敗</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUmC2qlg12i3weQMfhMjRT7Fs36NTNVuXgAmZ14RgARuzc-f3A5P6-R6RVcbFWjuV5zg2buO7UDMNQzmuJq7Yjz6p6uhzi36eDw9VLmBYSYsFfAzZnhLX-h94Sj4Ha-4Vu11rgEEmMHazPjEb01fLom=w940-h463-no?authuser=1" alt="AL9nZEUmC2qlg12i3weQMfhMjRT7Fs36NTNVuXgAmZ14RgARuzc f3A5P6 R6RVcbFWjuV5zg2buO7UDMNQzmuJq7Yjz6p6uhzi36eDw9VLmBYSYsFfAzZnhLX h94Sj4Ha 4Vu11rgEEmMHazPjEb01fLom=w940 h463 no?authuser=1 無法開啟 PHP ZipArchive 下載的 zip 檔" width="470" height="232" title="無法開啟 PHP ZipArchive 下載的 zip 檔"></figure></div>


<p>使用 notepad++ 開啟後才發現 zip 檔開頭有三行空白，可是有些電腦可以正常開啟有些電腦卻不行</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVkfKvVTFLvsECju82DL81lA0cgTr9UbDAzMFQKa0EYoBTd7BkCwQVNsgf7pAeJbFT5wvfG7ovzLSIsHevoDTCTe6caIDyIJmvsoi6cgQzor9JIL0mvkwUAsczIPFE7Eq6i99yno-QHzmq8WTTKaliH=w208-h119-no?authuser=1" alt="AL9nZEVkfKvVTFLvsECju82DL81lA0cgTr9UbDAzMFQKa0EYoBTd7BkCwQVNsgf7pAeJbFT5wvfG7ovzLSIsHevoDTCTe6caIDyIJmvsoi6cgQzor9JIL0mvkwUAsczIPFE7Eq6i99yno QHzmq8WTTKaliH=w208 h119 no?authuser=1 無法開啟 PHP ZipArchive 下載的 zip 檔" width="156" height="89" title="無法開啟 PHP ZipArchive 下載的 zip 檔"></figure></div>


<p>只要把那三行空白刪除，就可以正常解壓縮了 &#8230;</p>



<h2 class="para wp-block-heading">無法開啟壓縮檔的解決方法</h2>



<p>一開始以為是 ZipArchive 模組的問題，做了各種嘗試後發現，產出來的 zip 是正常的，並沒有上面那三行空白，那問題就是出在下載這段了。</p>



<p>試了很多方法發現只要有<code>&lt;?php include_once "xxx.php" ?&gt;</code>就會有三行空白的狀況，一開始笨笨的試著把所有用到的 include 都拔進來放，後來覺得這樣實在是又累又蠢，最後終於找到簡單解法 &#8230; 只要在<code>readfile</code>之前呼叫<code>ob_clean();</code>就可以避免這個問題 &#8230; </p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">// 以上省略
ob_clean();
@readfile($file);</pre>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/10668/%e7%84%a1%e6%b3%95%e9%96%8b%e5%95%9f-php-ziparchive-%e4%b8%8b%e8%bc%89%e7%9a%84-zip-%e6%aa%94/" data-wpel-link="internal">無法開啟 PHP ZipArchive 下載的 zip 檔</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/10668/%e7%84%a1%e6%b3%95%e9%96%8b%e5%95%9f-php-ziparchive-%e4%b8%8b%e8%bc%89%e7%9a%84-zip-%e6%aa%94/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CSS 段落文字縮排、凸排 (text-indent)</title>
		<link>https://noter.tw/10241/css-text-indent/</link>
					<comments>https://noter.tw/10241/css-text-indent/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Sat, 20 Aug 2022 06:10:53 +0000</pubDate>
				<category><![CDATA[網頁前端]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=10241</guid>

					<description><![CDATA[<p>小蛙在工作上常會遇到內容太長需要縮排的狀況，或有些文章的排版也是會用到首行縮排，這篇文章把 CSS text-indent 文字縮排 的簡單使用記下來。</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/10241/css-text-indent/" data-wpel-link="internal">CSS 段落文字縮排、凸排 (text-indent)</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>小蛙在工作上常會遇到內容太長需要縮排的狀況，或有些文章的排版也是會用到首行縮排，這篇文章把 CSS <code>text-indent</code> 文字縮排 的簡單使用記下來。</p>



<span id="more-10241"></span>



<h2 class="para wp-block-heading">text-indent 文字縮排</h2>



<p>小蛙無設定縮排的文字（由左至右、上至下排列），樣式如下</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEWJqlRi9kexGyXULP6B-OmieoNSreQP4c2m6bIYAEiYyi2FHdL90rGaG_4jB62Yzf3geTumER2c_ciUb3Z-zJrMscbAropH2clfqa54WJxX27CFsIIZ6rUPJ9FsFamzb2s1z7gvmdT4mTwR4ECKBXs-=w1271-h248-no?authuser=2" alt="網頁文字無縮排" width="636" height="124" title="CSS 段落文字縮排、凸排 (text-indent)"></figure></div>


<p>報章雜誌上常可見首行縮排兩個字的排版</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVnmVNwaCTW2TXYTVBS6ySozLentrVMybSKLevb78U5D-HJH-hrqc9jygBmiYJNOiv7Ovd9BOmwR6lRgBCZqX0UPQ4Iq1apE34VLvyA8JA2RpIZjRry4asKfA2eHDSHZmLimKAg3ZBiZboz___kKv1n=w1268-h265-no?authuser=2" alt="text-indent: 2em; 首頁縮排 2 字" width="634" height="133" title="CSS 段落文字縮排、凸排 (text-indent)"></figure></div>


<p>使用 <code>text-indent: 2em;</code> 即可輕鬆達成首行縮排兩個字，也可以透過 px 或其他單位進行調整</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;style>
.indent-2{
  text-indent: 2em;
}
&lt;/style>

&lt;h3>首行縮排二字&lt;/h3>
&lt;div class="indent-2">現在雲端儲存服務眾星雲集，例如：Google 雲端硬碟、Apple iCloud、Microsoft OneDrive、Dropbox、Box … 等，在共同編輯及使用的情況下，版本管理就非常重要了，這篇文章把 Google 雲端硬碟檔案版本管理的方法記下來。&lt;/div></pre>



<h2 class="para wp-block-heading">text-indent 還能做什麼</h2>



<p>小蛙一開始遇到 <code>text-indent</code> 是因為要做出下面這種排版</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVzD40zBbP7kymBWfdKPUZoz1gDhqPldsATaVdUGglEASJGIAIbhzdFvwi3kG9VkFGxMprRSb-e2Y3fhnp8dLl71-XDhjyIlayYbhQSieeJwL01dKMCgQ5oGlG-AVVBbTZ5T-jyDL1suGclFIoqc927=w1315-h168-no?authuser=2" alt="text-indent: 5em; margin-left: 5em; 首頁凸排 5 字，左邊邊界右推 5 字" width="658" height="84" title="CSS 段落文字縮排、凸排 (text-indent)"></figure></div>


<p>這個例子有 5 個字（包含一個全形：），我們先把 <code>2em</code> 改成 <code>5em</code>，剛剛我們設定 <code>text-indent: 2em;</code> 是首行往右邊縮 2 個字，那這個需求的理解是不是照理推改成 <code>text-indent: -5em;</code> 就可以變成往左邊的了？</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEUbQv2XuyVtLaqbQSaud7l6-RvR_Tw1hVysy5t8xTatNEz8mh2i5WAnE4_EsU7mnywtwaoqId__tYfnwhI2JkJeTxafXBZSUDAu-fk4v2ken9aooXniKNrN9R8u06aZUDcCBSzr3fzKKsn80JeahqWz=w1303-h155-no?authuser=2" alt="text-indent: 5em; 首頁凸排 5 字" width="652" height="78" title="CSS 段落文字縮排、凸排 (text-indent)"></figure></div>


<p>結果是 &#8230; 最左邊的字超出畫面，嗯，既然提到邊界，css 有一個左邊邊界的屬性 margin-left，加入 <code>margin-left: 5em;</code> 看看能不能把凸出去的內容再擠回來</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" src="https://lh3.googleusercontent.com/pw/AL9nZEVzD40zBbP7kymBWfdKPUZoz1gDhqPldsATaVdUGglEASJGIAIbhzdFvwi3kG9VkFGxMprRSb-e2Y3fhnp8dLl71-XDhjyIlayYbhQSieeJwL01dKMCgQ5oGlG-AVVBbTZ5T-jyDL1suGclFIoqc927=w1315-h168-no?authuser=2" alt="text-indent: 5em; margin-left: 5em; 首頁凸排 5 字，左邊邊界右推 5 字" width="658" height="84" title="CSS 段落文字縮排、凸排 (text-indent)"></figure></div>


<p>效果看起來的確是我們要的了，統整使用到的 css，只要把 <code>text-indent</code> 擠出去的位移，再用 <code>margin-left</code> 推回來，不管後面幾行要縮排多少，都可以自己調整囉！</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;style>
.indent-title-5{
  text-indent: -5em;
  margin-left: 5em;
}
&lt;/style>

&lt;div class="indent-title-5">文章摘要：現在雲端儲存服務眾星雲集，例如：Google 雲端硬碟、Apple iCloud、Microsoft OneDrive、Dropbox、Box … 等，在共同編輯及使用的情況下，版本管理就非常重要了，這篇文章把 Google 雲端硬碟檔案版本管理的方法記下來。&lt;/div></pre>



<p><strong>CSS 相關文章：</strong></p>



<ol class="my-li bg-darkblue wp-block-list"><li><a href="https://noter.tw/10241/css-text-indent/" data-wpel-link="internal">CSS 段落文字縮排、凸排 (text-indent)</a></li></ol>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/10241/css-text-indent/" data-wpel-link="internal">CSS 段落文字縮排、凸排 (text-indent)</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/10241/css-text-indent/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS</title>
		<link>https://noter.tw/8538/err_cache_miss/</link>
					<comments>https://noter.tw/8538/err_cache_miss/#comments</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Sat, 05 Jun 2021 06:41:57 +0000</pubDate>
				<category><![CDATA[網頁後端]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[history.back()]]></category>
		<category><![CDATA[送出表單]]></category>
		<category><![CDATA[重新提交表單]]></category>
		<category><![CDATA[上一頁]]></category>
		<category><![CDATA[文件已過期]]></category>
		<category><![CDATA[重新導向]]></category>
		<category><![CDATA[Cache-Control]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[ERR_CACHE_MISS]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=8538</guid>

					<description><![CDATA[<p>原本可以正常使用的系統裡，經過資安調整之後出現了 ERR_CACHE_MISS 的問題，記錄一下解決的方法。 平常瀏覽網頁的時候也會遇到，當送出表單後，點選「上一頁」常可以看到文件已過期，或是重新傳送&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/8538/err_cache_miss/" data-wpel-link="internal">Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>原本可以正常使用的系統裡，經過資安調整之後出現了 ERR_CACHE_MISS 的問題，記錄一下解決的方法。</p>



<span id="more-8538"></span>



<p class="withcode">平常瀏覽網頁的時候也會遇到，當送出表單後，點選「上一頁」常可以看到文件已過期，或是重新傳送這些資料才可以正確顯示之類的錯誤訊息，記得以前會看到<code>ERR_CACHE_MISS</code>錯誤的字樣，小蛙這次遇到的只有顯示如下圖</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/ACtC-3eSvPTbFIORBjFcpEsPvn90wGzIaXNUCrp25i3s9QSent9yf6064q3zx3R1JpHozzATD2LhTwU1_d3al4waPQ5RX7JAmDlMN2Nf7eo-xfyuYanrDOQk5Aw-T6GKADAvVyk6SclvZGi7YVpD79o8o_lA7Q=w1314-h650-no?authuser=2" alt="ACtC 3eSvPTbFIORBjFcpEsPvn90wGzIaXNUCrp25i3s9QSent9yf6064q3zx3R1JpHozzATD2LhTwU1 d3al4waPQ5RX7JAmDlMN2Nf7eo xfyuYanrDOQk5Aw T6GKADAvVyk6SclvZGi7YVpD79o8o lA7Q=w1314 h650 no?authuser=2 Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS" title="Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS"><figcaption>Chrome 錯誤訊息：這個網頁需要使用你先前輸入的資料才能正確顯示。你可以重新傳送這些資料，不過這麼做會重複執行這個網頁先前執行過的任何動作。 (ERR_CACHE_MISS)</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://lh3.googleusercontent.com/pw/ACtC-3f_qjJrM_VT4J6DVmyBUA8UnC4f3AzMssF_Ctxux1nsRzdsxZXI0prLeuH-01YNoQ3WYgIpG-BzUYaeDt3unvCruWrxGTIOnzNOcr3eynoV4gRC84NUQCEhzWcUTyRtEdBwsgZQn02TmqZD1j9-lkS8Cg=w826-h494-no?authuser=2" alt="ACtC 3f qjJrM VT4J6DVmyBUA8UnC4f3AzMssF Ctxux1nsRzdsxZXI0prLeuH 01YNoQ3WYgIpG BzUYaeDt3unvCruWrxGTIOnzNOcr3eynoV4gRC84NUQCEhzWcUTyRtEdBwsgZQn02TmqZD1j9 lkS8Cg=w826 h494 no?authuser=2 Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS" title="Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS"><figcaption>Firefox 錯誤訊息：文件已過期 此文件已不存在。您所請求的文件已不存在於 Firefox 的快取當中。為了您的安全，Firefox 將不會自動重新請求敏感文件。請點下重試以重新向網站請求取得文件。(ERR_CACHE_MISS)</figcaption></figure>



<p class="withcode">小蛙接手處理的這個系統則是原本點選上一頁沒有問題，經過資安掃描修正後發生的，Google 及跟處理過該狀況的同事討論過之後找到相同的答案，如果在 header 中加入<code>Cache-Control: private</code>的設定，就可以解決掉這個問題！</p>



<h2 class="para wp-block-heading">PHP</h2>



<pre class="wp-block-preformatted withcode">// 在 session_start(); 後加入
header("Cache-Control:private");</pre>



<h2 class="para wp-block-heading">JSP</h2>



<pre class="wp-block-preformatted withcode">response.setHeader("Cache-Control", "private");</pre>



<p>參考資料：</p>



<ul class="my-li bg-darkblue wp-block-list"><li>Chrome浏览器对于POST页面执行history.back返回或表单数据丢失的解决办法<br>(連結失效 https://www.unixso.com/Php/post-header.html)</li><li><a href="https://blog.csdn.net/A9925/article/details/42027229" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">ERR_CACHE_MISS 搜尋回上一頁空白或錯誤<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li><li><a href="https://www.cnblogs.com/houdj/p/9685571.html" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">ERR_CACHE_MISS 上一页提示确认重新提交表单<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li></ul>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/8538/err_cache_miss/" data-wpel-link="internal">Post 後上一頁 history.back() 發生文件已到期/認重新提交表單 ERR_CACHE_MISS</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/8538/err_cache_miss/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>使用 Cloudflare AddToAny Share Buttons 來分享你的網站</title>
		<link>https://noter.tw/4597/%e4%bd%bf%e7%94%a8-cloudflare-addtoany-share-buttons-%e4%be%86%e5%88%86%e4%ba%ab%e4%bd%a0%e7%9a%84%e7%b6%b2%e7%ab%99/</link>
					<comments>https://noter.tw/4597/%e4%bd%bf%e7%94%a8-cloudflare-addtoany-share-buttons-%e4%be%86%e5%88%86%e4%ba%ab%e4%bd%a0%e7%9a%84%e7%b6%b2%e7%ab%99/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Sun, 10 Mar 2019 12:04:35 +0000</pubDate>
				<category><![CDATA[技術相關]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[cloudflare]]></category>
		<category><![CDATA[AddToAny]]></category>
		<category><![CDATA[分享按鈕]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[2019]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[DNS]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=4597</guid>

					<description><![CDATA[<p>記下來這個部落格一直都沒有開啟分享的功能，是因為 Worpdress 的 AddToAny Share Buttons 套件在小蛙的 theme 會一直出問題，索性就不放了，不過今天在 Cloudfl&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/4597/%e4%bd%bf%e7%94%a8-cloudflare-addtoany-share-buttons-%e4%be%86%e5%88%86%e4%ba%ab%e4%bd%a0%e7%9a%84%e7%b6%b2%e7%ab%99/" data-wpel-link="internal">使用 Cloudflare AddToAny Share Buttons 來分享你的網站</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>記下來這個部落格一直都沒有開啟分享的功能，是因為 Worpdress 的 <a href="https://tw.wordpress.org/plugins/add-to-any/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">AddToAny Share Buttons<span class="wpel-icon wpel-image wpel-icon-6"></span></a> 套件在小蛙的 theme 會一直出問題，索性就不放了，不過今天在 Cloudflare 上看到一個功能，覺得有趣馬上試用看看，效果很好，這篇記錄一下給有需要的人參考。</p>



<span id="more-4597"></span>



<p>Cloudflare 之前有介紹過是一套非常強大的免費 CDN，算起來也很佛心，免費版本已經提供非常多好用的功能了，今天小蛙要再來講它裡面有一個叫做 Apps 的功能。</p>



<p>登入 Cloudflare 之後，進入要管理的 Site 之後，上方選單中的最右邊的 Apps，進去之後搜尋 Share 就可以看到 AddToAny Share Buttons 的 App 可以安裝</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/5s3HN8Hr40iKyEFWvKIlSPQ6H5AMENAiKU6D_puF4k22LJiAEIdi6_sxE4U1yLHYl-lePIiqtTxXHoTmPqX7rtPYnX4L53_MWO_2gFxOktERfy__JWBVkUHJv_Ul-MCzqFDp_90lquQb8vRTE7HvMma0IuI-RJGzlmbQv3m06_n3u3zvCS1jV0a_EPdfP_MLyRtlvIYCacBDi64I-RH3RufLQDODJRQhfzSyYxFvCGK0wnJE7KRJN_aI3oLOFjPY41P8Lwa_DPmjC4lAkq3TwWdmdtvzU-xk58ifdBnBfaRUuuKHTk4RJAPUjacfuhRvXvvdIbVCbb8yVOxHVetJF8UXC0T90Z0j2_vcokmWm30q88W0Vg8HraqTLC4IKnr0hxG-mbO4QA9_nf_ICfJizEMxp-vtRK6S9qc8U7iFVpxkPtDJRwNPy9tN1LeR9u6je4loELpqBXe4bdRgOQwC1i_E9gjEfCA2tAd4ng4aKDPokd3UvTOyGfTLFpA16edoVxGmeonAtrAlZPqWy9B9worQAJxjvLmJTqqJ-WBDYxmQjQmeiXMu8saHxlEkmVu79NcJWU8DYTov5ZG1f_O9f-IR6zaIdWiNPTe1kufgzuI7_C7o1psRxgaEbF2Ko55DAUJ_HzE1Xj2JjjOVvbOieGt6fhhCRIxW=w331-h106-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/5s3HN8Hr40iKyEFWvKIlSPQ6H5AMENAiKU6D_puF4k22LJiAEIdi6_sxE4U1yLHYl-lePIiqtTxXHoTmPqX7rtPYnX4L53_MWO_2gFxOktERfy__JWBVkUHJv_Ul-MCzqFDp_90lquQb8vRTE7HvMma0IuI-RJGzlmbQv3m06_n3u3zvCS1jV0a_EPdfP_MLyRtlvIYCacBDi64I-RH3RufLQDODJRQhfzSyYxFvCGK0wnJE7KRJN_aI3oLOFjPY41P8Lwa_DPmjC4lAkq3TwWdmdtvzU-xk58ifdBnBfaRUuuKHTk4RJAPUjacfuhRvXvvdIbVCbb8yVOxHVetJF8UXC0T90Z0j2_vcokmWm30q88W0Vg8HraqTLC4IKnr0hxG-mbO4QA9_nf_ICfJizEMxp-vtRK6S9qc8U7iFVpxkPtDJRwNPy9tN1LeR9u6je4loELpqBXe4bdRgOQwC1i_E9gjEfCA2tAd4ng4aKDPokd3UvTOyGfTLFpA16edoVxGmeonAtrAlZPqWy9B9worQAJxjvLmJTqqJ-WBDYxmQjQmeiXMu8saHxlEkmVu79NcJWU8DYTov5ZG1f_O9f-IR6zaIdWiNPTe1kufgzuI7_C7o1psRxgaEbF2Ko55DAUJ_HzE1Xj2JjjOVvbOieGt6fhhCRIxW=w331-h106-no" alt="5s3HN8Hr40iKyEFWvKIlSPQ6H5AMENAiKU6D puF4k22LJiAEIdi6 sxE4U1yLHYl lePIiqtTxXHoTmPqX7rtPYnX4L53 MWO 2gFxOktERfy JWBVkUHJv Ul MCzqFDp 90lquQb8vRTE7HvMma0IuI RJGzlmbQv3m06 n3u3zvCS1jV0a EPdfP MLyRtlvIYCacBDi64I RH3RufLQDODJRQhfzSyYxFvCGK0wnJE7KRJN aI3oLOFjPY41P8Lwa DPmjC4lAkq3TwWdmdtvzU xk58ifdBnBfaRUuuKHTk4RJAPUjacfuhRvXvvdIbVCbb8yVOxHVetJF8UXC0T90Z0j2 vcokmWm30q88W0Vg8HraqTLC4IKnr0hxG mbO4QA9 nf ICfJizEMxp vtRK6S9qc8U7iFVpxkPtDJRwNPy9tN1LeR9u6je4loELpqBXe4bdRgOQwC1i E9gjEfCA2tAd4ng4aKDPokd3UvTOyGfTLFpA16edoVxGmeonAtrAlZPqWy9B9worQAJxjvLmJTqqJ WBDYxmQjQmeiXMu8saHxlEkmVu79NcJWU8DYTov5ZG1f O9f IR6zaIdWiNPTe1kufgzuI7 C7o1psRxgaEbF2Ko55DAUJ HzE1Xj2JjjOVvbOieGt6fhhCRIxW=w331 h106 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>小蛙安裝過了有點懶得刪掉再重新設定一次，下面拿另一個套件的畫面來放，點選 Preview on your site</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/5TK_mqHC0Vd96JPl9RR5iZDwC3G2XVxSg_TnGvh0tPm1OMF0pj3we6IaZK3AeGUZ1g2l8W4TogkmHxNvHAkmHvazOl8fVkWuA5A2ajy61yJsxh2sYJ9_eJoLs6xXHMQKkq0Jx7CIJm8xuJnlqEXynFCbaMSNHGR52BG99FmTaopEirBl_FIGoOfedsREQX8_eNezkzOZLWAzvZulZ4b1mmhWatzUNlRWbEqMQm0EeUx7a803Cj4DGFIDTs-W1DiAMsJeyBxYtE0oRQ4u4vw8vl9TJVumDWFjmPJGgKEbxbzZnWPFjQePpALX3Ah8zX8nKhqJaX6tm_5wqreVTsuRhnRCiCpsOStlTZnlTgtZ16HIBQAT_it5-EtFCcwgiD3veWXYicbFV4KQLaGgn_62Or8YAKdB0lCgKbReRYS6gmouPxIXbJXVtpM9xcdRxWRhBouD4bS5Q53NGP_Vfca6T_TEGzk88iTYfCvOl0XDF-REscobCiFrfkGuZ8FnRB_ZKcZshjX8SsFOJ7kN96JSpUEDPFWJ3qXWj7O1pzcxZNaMNyQPkFG9DKwUXJ_pDQHb5sbii0B-Qq4zoTDFVuGd5Bhnt5FMEJenNj7Gc-EOPBG883bxdVzogcous4uDf4bsZ7LRReovGswq8x-zhW-vAhrDoQUNHk22=w1877-h578-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/5TK_mqHC0Vd96JPl9RR5iZDwC3G2XVxSg_TnGvh0tPm1OMF0pj3we6IaZK3AeGUZ1g2l8W4TogkmHxNvHAkmHvazOl8fVkWuA5A2ajy61yJsxh2sYJ9_eJoLs6xXHMQKkq0Jx7CIJm8xuJnlqEXynFCbaMSNHGR52BG99FmTaopEirBl_FIGoOfedsREQX8_eNezkzOZLWAzvZulZ4b1mmhWatzUNlRWbEqMQm0EeUx7a803Cj4DGFIDTs-W1DiAMsJeyBxYtE0oRQ4u4vw8vl9TJVumDWFjmPJGgKEbxbzZnWPFjQePpALX3Ah8zX8nKhqJaX6tm_5wqreVTsuRhnRCiCpsOStlTZnlTgtZ16HIBQAT_it5-EtFCcwgiD3veWXYicbFV4KQLaGgn_62Or8YAKdB0lCgKbReRYS6gmouPxIXbJXVtpM9xcdRxWRhBouD4bS5Q53NGP_Vfca6T_TEGzk88iTYfCvOl0XDF-REscobCiFrfkGuZ8FnRB_ZKcZshjX8SsFOJ7kN96JSpUEDPFWJ3qXWj7O1pzcxZNaMNyQPkFG9DKwUXJ_pDQHb5sbii0B-Qq4zoTDFVuGd5Bhnt5FMEJenNj7Gc-EOPBG883bxdVzogcous4uDf4bsZ7LRReovGswq8x-zhW-vAhrDoQUNHk22=w1877-h578-no" alt="5TK mqHC0Vd96JPl9RR5iZDwC3G2XVxSg TnGvh0tPm1OMF0pj3we6IaZK3AeGUZ1g2l8W4TogkmHxNvHAkmHvazOl8fVkWuA5A2ajy61yJsxh2sYJ9 eJoLs6xXHMQKkq0Jx7CIJm8xuJnlqEXynFCbaMSNHGR52BG99FmTaopEirBl FIGoOfedsREQX8 eNezkzOZLWAzvZulZ4b1mmhWatzUNlRWbEqMQm0EeUx7a803Cj4DGFIDTs W1DiAMsJeyBxYtE0oRQ4u4vw8vl9TJVumDWFjmPJGgKEbxbzZnWPFjQePpALX3Ah8zX8nKhqJaX6tm 5wqreVTsuRhnRCiCpsOStlTZnlTgtZ16HIBQAT it5 EtFCcwgiD3veWXYicbFV4KQLaGgn 62Or8YAKdB0lCgKbReRYS6gmouPxIXbJXVtpM9xcdRxWRhBouD4bS5Q53NGP Vfca6T TEGzk88iTYfCvOl0XDF REscobCiFrfkGuZ8FnRB ZKcZshjX8SsFOJ7kN96JSpUEDPFWJ3qXWj7O1pzcxZNaMNyQPkFG9DKwUXJ pDQHb5sbii0B Qq4zoTDFVuGd5Bhnt5FMEJenNj7Gc EOPBG883bxdVzogcous4uDf4bsZ7LRReovGswq8x zhW vAhrDoQUNHk22=w1877 h578 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>進入下一個畫面之後會看到切割成左右兩邊，右邊是網站的預覽，左邊是一些設定<br></p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://lh3.googleusercontent.com/eu84Gz_Xxs5gOlyswLynXCEMMbXY3EITxQgNL1l-58t2WlPOPhtdbM2990ZOrGZb8g1metaXVFYAAL0eIjA2Rrdp8lDSiHFn4PLpzlyD55xtZj5IUgILFI7x7J_xc1Ydhsz7Cf4lMdx04R-noB29Lqk2EY1EUCgg_CBXzpDWi0dfXdvY6I4rvky8o4v-Z1TyX0TGFuz-WINVoyXQYBlpmuqnO0Lu6WdXttDQJWfGSFuMZK75Ic_957t4fRuFVpsS9VbIylmAwK6Y08KacsF8mLb0Xz0pDo8KnEtOFysiqPHSoh41c_TFyWkCejyaqsVC6rI-h8XbzRPhbK-hMYhPAKVAjkKUyDRLl9g8FBRZRVByrn44XiVsg89Jj6SyUEfpyhZm8bvlin6m1JYLz9M0bKCP1AbbL-JmP4gSXidIJKTktA--39GGSavdTkvFDcitlXO7s3i6o1gsfee_xLwf3wR3coB-lVHpdWa2c_MV2pr0KfZBsoNVjXAtuGa2tHeARzNjY1T4nsObwE9h2HWx4BznRy1JxBqVrqSMnIdnv3cIo_IAjGqe4qZKps_wBhnWKJeEhDwFl__WltbaAwQ9qyVwfLOa0ZMa3F7OSmN_elMX0NTHcDg7WX8UvJikHW_Pi_DQPlG8qvBNxidslsKPEYPTZdnIQ59B=w306-h362-no" alt="eu84Gz Xxs5gOlyswLynXCEMMbXY3EITxQgNL1l 58t2WlPOPhtdbM2990ZOrGZb8g1metaXVFYAAL0eIjA2Rrdp8lDSiHFn4PLpzlyD55xtZj5IUgILFI7x7J xc1Ydhsz7Cf4lMdx04R noB29Lqk2EY1EUCgg CBXzpDWi0dfXdvY6I4rvky8o4v Z1TyX0TGFuz WINVoyXQYBlpmuqnO0Lu6WdXttDQJWfGSFuMZK75Ic 957t4fRuFVpsS9VbIylmAwK6Y08KacsF8mLb0Xz0pDo8KnEtOFysiqPHSoh41c TFyWkCejyaqsVC6rI h8XbzRPhbK hMYhPAKVAjkKUyDRLl9g8FBRZRVByrn44XiVsg89Jj6SyUEfpyhZm8bvlin6m1JYLz9M0bKCP1AbbL JmP4gSXidIJKTktA 39GGSavdTkvFDcitlXO7s3i6o1gsfee xLwf3wR3coB lVHpdWa2c MV2pr0KfZBsoNVjXAtuGa2tHeARzNjY1T4nsObwE9h2HWx4BznRy1JxBqVrqSMnIdnv3cIo IAjGqe4qZKps wBhnWKJeEhDwFl WltbaAwQ9qyVwfLOa0ZMa3F7OSmN elMX0NTHcDg7WX8UvJikHW Pi DQPlG8qvBNxidslsKPEYPTZdnIQ59B=w306 h362 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></figure></div>



<p>Buttons type 是設定你要浮動 Floating 或是固定在某處 Inline，Vertical bar 跟 Horizontal bar 分別是垂直的跟水平的，因為電腦版頁面比較寬，因此適合垂直放在最邊邊，當然還是要視每個人狀況而定，一般手機板左右比較窄，因此設計成分享按鈕為水平的，這邊小蛙的設定是電腦版的時候，在網站左側垂直浮動，在手機版的時候則變成底部中央浮動。</p>



<p>接著是按鈕設定，顏色可以選擇預設的或是自訂，下面分別是按鈕大小、圓角程度、按鈕間距、跟按鈕離底部的距離等設定，把下面的 Show sharing options 打勾進行按鈕類別的設定。</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/78WPmB8TgpxnRCrfY79GMLO7MusIPGajc1rlPvgvoa1kW-dphcBGcsXKusPZt_hP6fe6LtXDibkWim3lBz8qkW_1gOXswEZuUc5a6sqBS6pfY4XxJpoUseK9UyXLgvL1ui9_K9ttlnxld31GSIUO-Onh8UaXz4pSp0xrjX0CpIZyW0ggw9BgzyHhZNa_1k-lUToOl11j8xDb1Yt0eZVhi1Qvddmcsr-T5uE-hdLTcKgddGGJIAR6NmxqEhLn3bPb3-afB6NZEKzKPvJurhIM_AV3Jg4EKMMxBCxlKuOCFTvpObVxSdCLp7fUwXOgS-nFD5lzVYqO8UFAOKERQz-ykQxlembgwMLCEFL07_FYAHrq5WjjTatR4_lvfwNEzTl2wb06YcghAwwR4xOeec90n8Am516bx7sfeOGe-mQJg4rLd4TdBqaTFWemqPtIkdeO7wKo9_GXnfiiRrWTpjRfC7AVPHQYCuhs17A6P0hPRP7K44anFTGhJypTBwZIUbtt74CCMnEll66bgvABfU_ThK6CWP_j3FKfnse3GdkeTEWpd7BcT7OCwX3OG7poMtOw_7AUNli4uwba0HXBpDxfCDUEtwbyuEjF1PyvqIljmMnRyIrRNTLWIkN_ka-IobhqtfBbHjxqJ2rr8cHbxbv5tErvHJlQ8TGj=w514-h416-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/78WPmB8TgpxnRCrfY79GMLO7MusIPGajc1rlPvgvoa1kW-dphcBGcsXKusPZt_hP6fe6LtXDibkWim3lBz8qkW_1gOXswEZuUc5a6sqBS6pfY4XxJpoUseK9UyXLgvL1ui9_K9ttlnxld31GSIUO-Onh8UaXz4pSp0xrjX0CpIZyW0ggw9BgzyHhZNa_1k-lUToOl11j8xDb1Yt0eZVhi1Qvddmcsr-T5uE-hdLTcKgddGGJIAR6NmxqEhLn3bPb3-afB6NZEKzKPvJurhIM_AV3Jg4EKMMxBCxlKuOCFTvpObVxSdCLp7fUwXOgS-nFD5lzVYqO8UFAOKERQz-ykQxlembgwMLCEFL07_FYAHrq5WjjTatR4_lvfwNEzTl2wb06YcghAwwR4xOeec90n8Am516bx7sfeOGe-mQJg4rLd4TdBqaTFWemqPtIkdeO7wKo9_GXnfiiRrWTpjRfC7AVPHQYCuhs17A6P0hPRP7K44anFTGhJypTBwZIUbtt74CCMnEll66bgvABfU_ThK6CWP_j3FKfnse3GdkeTEWpd7BcT7OCwX3OG7poMtOw_7AUNli4uwba0HXBpDxfCDUEtwbyuEjF1PyvqIljmMnRyIrRNTLWIkN_ka-IobhqtfBbHjxqJ2rr8cHbxbv5tErvHJlQ8TGj=w514-h416-no" alt="78WPmB8TgpxnRCrfY79GMLO7MusIPGajc1rlPvgvoa1kW dphcBGcsXKusPZt hP6fe6LtXDibkWim3lBz8qkW 1gOXswEZuUc5a6sqBS6pfY4XxJpoUseK9UyXLgvL1ui9 K9ttlnxld31GSIUO Onh8UaXz4pSp0xrjX0CpIZyW0ggw9BgzyHhZNa 1k lUToOl11j8xDb1Yt0eZVhi1Qvddmcsr T5uE hdLTcKgddGGJIAR6NmxqEhLn3bPb3 afB6NZEKzKPvJurhIM AV3Jg4EKMMxBCxlKuOCFTvpObVxSdCLp7fUwXOgS nFD5lzVYqO8UFAOKERQz ykQxlembgwMLCEFL07 FYAHrq5WjjTatR4 lvfwNEzTl2wb06YcghAwwR4xOeec90n8Am516bx7sfeOGe mQJg4rLd4TdBqaTFWemqPtIkdeO7wKo9 GXnfiiRrWTpjRfC7AVPHQYCuhs17A6P0hPRP7K44anFTGhJypTBwZIUbtt74CCMnEll66bgvABfU ThK6CWP j3FKfnse3GdkeTEWpd7BcT7OCwX3OG7poMtOw 7AUNli4uwba0HXBpDxfCDUEtwbyuEjF1PyvqIljmMnRyIrRNTLWIkN ka IobhqtfBbHjxqJ2rr8cHbxbv5tErvHJlQ8TGj=w514 h416 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>如果 Service 下拉沒有看到自己要的服務，可以點選 AddToAny service code 那行藍字，過去找自己要的服務，點進去之後可以看到 code 是什麼，照著填上來就可以了，像這邊小蛙去查了 Line 的 code 是 line，Service 選 Other &#8230; 然後 Service code 填入 line 就會出現 Line 的分享按鈕了。</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/szq2ANUhmbyv9KGQU2yrbOW_cfCMmDI42nddsN6i7-kTkj42W700iL5oc0AyeyABYkbXNkcETLu9ARLKONd_23DD6cMQSdKUPMCTvjZDzB9E-B5mhma2y9pEFC1Vm4ypWCekOWw_AgWjYZkbPZEpwNCmaex_iEY-w60BvRTyRj5yi-tU62VQpVT3JGo4zuYfpSV5bQnwTXpjPBnuLwLWYOeM6WzccRagL92d0EXIK0Qhe32jDalEJrSCCq5xV7WQ-kDQmZiHLtH2TxZocp6cVMCWN-xjCrh3_N8c3-AFRRbtCjfOKQrT0yX91b-MfqZackXJtFxVN9ZA6SwwZOhpcbBkzg7lCnUs0hSNvv75xGjlNStqSq2YsosM1LbQzm74_XBO71wtDRwvEDICuEA-2LC8-1c2z0IrD63QChhcxcNn0-ODWU9Se_qrZNG9z43I-PlxRYyW3xYaqsq8DU-bJwqwbZhj6e9H81k-s0Ny-2xwF-6TTCEoZ16p0DjvGx3wsr5fOrg-cEp9Tr5JBoHbO2V_zKjmukI59spTWjBRyX8ebh01L8hhWdsy0LEbxk2Ak7SCUBQ5-gYjTeFtO5D3h2b1LXnptqCLWja6lhf1wFwvgkwNF-Az1WiJ6Fmzjyhs2FnSdLPvrpvAZ3dLxgVRFHoiXz3_pUKm=w490-h681-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/szq2ANUhmbyv9KGQU2yrbOW_cfCMmDI42nddsN6i7-kTkj42W700iL5oc0AyeyABYkbXNkcETLu9ARLKONd_23DD6cMQSdKUPMCTvjZDzB9E-B5mhma2y9pEFC1Vm4ypWCekOWw_AgWjYZkbPZEpwNCmaex_iEY-w60BvRTyRj5yi-tU62VQpVT3JGo4zuYfpSV5bQnwTXpjPBnuLwLWYOeM6WzccRagL92d0EXIK0Qhe32jDalEJrSCCq5xV7WQ-kDQmZiHLtH2TxZocp6cVMCWN-xjCrh3_N8c3-AFRRbtCjfOKQrT0yX91b-MfqZackXJtFxVN9ZA6SwwZOhpcbBkzg7lCnUs0hSNvv75xGjlNStqSq2YsosM1LbQzm74_XBO71wtDRwvEDICuEA-2LC8-1c2z0IrD63QChhcxcNn0-ODWU9Se_qrZNG9z43I-PlxRYyW3xYaqsq8DU-bJwqwbZhj6e9H81k-s0Ny-2xwF-6TTCEoZ16p0DjvGx3wsr5fOrg-cEp9Tr5JBoHbO2V_zKjmukI59spTWjBRyX8ebh01L8hhWdsy0LEbxk2Ak7SCUBQ5-gYjTeFtO5D3h2b1LXnptqCLWja6lhf1wFwvgkwNF-Az1WiJ6Fmzjyhs2FnSdLPvrpvAZ3dLxgVRFHoiXz3_pUKm=w490-h681-no" alt="szq2ANUhmbyv9KGQU2yrbOW cfCMmDI42nddsN6i7 kTkj42W700iL5oc0AyeyABYkbXNkcETLu9ARLKONd 23DD6cMQSdKUPMCTvjZDzB9E B5mhma2y9pEFC1Vm4ypWCekOWw AgWjYZkbPZEpwNCmaex iEY w60BvRTyRj5yi tU62VQpVT3JGo4zuYfpSV5bQnwTXpjPBnuLwLWYOeM6WzccRagL92d0EXIK0Qhe32jDalEJrSCCq5xV7WQ kDQmZiHLtH2TxZocp6cVMCWN xjCrh3 N8c3 AFRRbtCjfOKQrT0yX91b MfqZackXJtFxVN9ZA6SwwZOhpcbBkzg7lCnUs0hSNvv75xGjlNStqSq2YsosM1LbQzm74 XBO71wtDRwvEDICuEA 2LC8 1c2z0IrD63QChhcxcNn0 ODWU9Se qrZNG9z43I PlxRYyW3xYaqsq8DU bJwqwbZhj6e9H81k s0Ny 2xwF 6TTCEoZ16p0DjvGx3wsr5fOrg cEp9Tr5JBoHbO2V zKjmukI59spTWjBRyX8ebh01L8hhWdsy0LEbxk2Ak7SCUBQ5 gYjTeFtO5D3h2b1LXnptqCLWja6lhf1wFwvgkwNF Az1WiJ6Fmzjyhs2FnSdLPvrpvAZ3dLxgVRFHoiXz3 pUKm=w490 h681 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>最後下面留一個 Service: AddToAny 的話，就會出現一個 + 符號，目的是如果使用者沒有找到自己要的分享工具，可以透過這個 + 點進去找，最後一行如果留空白，會自動把當前頁面分享出去。</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/bsHGeTh1MLLegw2ST1VuAfHqhljRRHJChBfJKnoNMtwFndbkESX24x1SOq1d0ldXM7qSGhlTUwlndGDPCKFfFc5_f7C5A1-krV4Sh26qVZWtiN1HGkQm5qIE0MurLArXVJ2rz2u0Hk_sd2LS-mMm--epwBO_WuehyskafAcHMDml7NsAfeLCYMrn87xVFHC0E4dF1ycN-ESYNu4ZVYt41geqFd1KxTojcXgWpZVDHkQAfonyJsJ-m2C1ubupj-DT5ieOJ7CnbrDFgpvWgYq3DtZxdW2gskQR5rvOHCTde8q2UzLSsHfgmXdomZXRJz-1es83OBTodNGIt_zyS2A2HbyYYcZeThCXQswJzQqWV2iOBxlnP-rcMsbSc3UQI3guU4oiWnGOeV230jS60MCuKJQNGauOJkrAXOtBxmPQOYB4WyaCL5UzuHDTMan8izHgv1DZElLc3LHYPpyvH4JF_-afBneavJ4w97PzM_iQsF2Xv878E7Kd1p7fdIYdwa_PA7Uv-YVGQQy9xNa9LP-ocSRRvxDH2HE40Ta-GFvOCxAPTzwvLewMH2xrIp19-GVIOmWmUYxfwrlVndCD5ZssTnk_k2KBBFKEeUf8Pw5OjjI0uhR_dMouNXAfzVO8EFlIDBNcQOLmSKveHxDg_XBo-rBD8DnTt-nc=w529-h304-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/bsHGeTh1MLLegw2ST1VuAfHqhljRRHJChBfJKnoNMtwFndbkESX24x1SOq1d0ldXM7qSGhlTUwlndGDPCKFfFc5_f7C5A1-krV4Sh26qVZWtiN1HGkQm5qIE0MurLArXVJ2rz2u0Hk_sd2LS-mMm--epwBO_WuehyskafAcHMDml7NsAfeLCYMrn87xVFHC0E4dF1ycN-ESYNu4ZVYt41geqFd1KxTojcXgWpZVDHkQAfonyJsJ-m2C1ubupj-DT5ieOJ7CnbrDFgpvWgYq3DtZxdW2gskQR5rvOHCTde8q2UzLSsHfgmXdomZXRJz-1es83OBTodNGIt_zyS2A2HbyYYcZeThCXQswJzQqWV2iOBxlnP-rcMsbSc3UQI3guU4oiWnGOeV230jS60MCuKJQNGauOJkrAXOtBxmPQOYB4WyaCL5UzuHDTMan8izHgv1DZElLc3LHYPpyvH4JF_-afBneavJ4w97PzM_iQsF2Xv878E7Kd1p7fdIYdwa_PA7Uv-YVGQQy9xNa9LP-ocSRRvxDH2HE40Ta-GFvOCxAPTzwvLewMH2xrIp19-GVIOmWmUYxfwrlVndCD5ZssTnk_k2KBBFKEeUf8Pw5OjjI0uhR_dMouNXAfzVO8EFlIDBNcQOLmSKveHxDg_XBo-rBD8DnTt-nc=w529-h304-no" alt="bsHGeTh1MLLegw2ST1VuAfHqhljRRHJChBfJKnoNMtwFndbkESX24x1SOq1d0ldXM7qSGhlTUwlndGDPCKFfFc5 f7C5A1 krV4Sh26qVZWtiN1HGkQm5qIE0MurLArXVJ2rz2u0Hk sd2LS mMm epwBO WuehyskafAcHMDml7NsAfeLCYMrn87xVFHC0E4dF1ycN ESYNu4ZVYt41geqFd1KxTojcXgWpZVDHkQAfonyJsJ m2C1ubupj DT5ieOJ7CnbrDFgpvWgYq3DtZxdW2gskQR5rvOHCTde8q2UzLSsHfgmXdomZXRJz 1es83OBTodNGIt zyS2A2HbyYYcZeThCXQswJzQqWV2iOBxlnP rcMsbSc3UQI3guU4oiWnGOeV230jS60MCuKJQNGauOJkrAXOtBxmPQOYB4WyaCL5UzuHDTMan8izHgv1DZElLc3LHYPpyvH4JF afBneavJ4w97PzM iQsF2Xv878E7Kd1p7fdIYdwa PA7Uv YVGQQy9xNa9LP ocSRRvxDH2HE40Ta GFvOCxAPTzwvLewMH2xrIp19 GVIOmWmUYxfwrlVndCD5ZssTnk k2KBBFKEeUf8Pw5OjjI0uhR dMouNXAfzVO8EFlIDBNcQOLmSKveHxDg XBo rBD8DnTt nc=w529 h304 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>所有步驟完成之後，點選左下角的 Install on all pages，就會安裝在網站上每個頁面的左側。</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/ZEthz1NVeuPbHVBZmhJJBqpa_uLlvQtq6Wb6A9LCKpPNWycdNggn4FQiBtKby25B06n1pnkIMrfSfNRTmAtkS3l6VbE5lDvMytxEuGg8k_VdeVZ2-HTIXnmO-2uNMR4JLXHTGH4ImRw1GTPuQCYqZ39PBiAJ2e_6RzxFXkOQMWWkZPOzfAsG0liF4nobLqVzj4Rwa3EKQ2dmZkJq7t1KS1s2gtltZJ3ks4md0xObEl2naSrp_egrYqi8jYhPYBTk62sNSVLPrVSaDMogXnqIWKg4-zUFaXdnVfsj8YRl8FJVNPOJnP7Zmnr3yulME7Rft6Hgk6dVQpyCqII3DTojk9cyDOln2ko4DpTHKSr45raUlyqc9pITcdxW95oTcfI4wVGfXDOVQwwUAOKbtZa6r1TyQX3i4wvKqmXtO4QZMtppdixwIOlV8n-xc10V74xaLMPqXs6J42nN2Gp40VDxbZftaCULAhEj99wlgM8itv7UojDvljPwFAMjrCHT6cwHNYqF5YxoW90nWmHNXud_b_g72mghnOIJcR5M9kh0vDrbw_5XfBLU4Sx7CYZMa60mqTS1-aFt5VG9EpNnR88FMiW2yaDlL14RvrXXDEgi0tNs_Gaol6jqWRo5o5uZdYJMG3marjuf_cBinDeb5qRy71Oe6q2h_0tu=w397-h100-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/ZEthz1NVeuPbHVBZmhJJBqpa_uLlvQtq6Wb6A9LCKpPNWycdNggn4FQiBtKby25B06n1pnkIMrfSfNRTmAtkS3l6VbE5lDvMytxEuGg8k_VdeVZ2-HTIXnmO-2uNMR4JLXHTGH4ImRw1GTPuQCYqZ39PBiAJ2e_6RzxFXkOQMWWkZPOzfAsG0liF4nobLqVzj4Rwa3EKQ2dmZkJq7t1KS1s2gtltZJ3ks4md0xObEl2naSrp_egrYqi8jYhPYBTk62sNSVLPrVSaDMogXnqIWKg4-zUFaXdnVfsj8YRl8FJVNPOJnP7Zmnr3yulME7Rft6Hgk6dVQpyCqII3DTojk9cyDOln2ko4DpTHKSr45raUlyqc9pITcdxW95oTcfI4wVGfXDOVQwwUAOKbtZa6r1TyQX3i4wvKqmXtO4QZMtppdixwIOlV8n-xc10V74xaLMPqXs6J42nN2Gp40VDxbZftaCULAhEj99wlgM8itv7UojDvljPwFAMjrCHT6cwHNYqF5YxoW90nWmHNXud_b_g72mghnOIJcR5M9kh0vDrbw_5XfBLU4Sx7CYZMa60mqTS1-aFt5VG9EpNnR88FMiW2yaDlL14RvrXXDEgi0tNs_Gaol6jqWRo5o5uZdYJMG3marjuf_cBinDeb5qRy71Oe6q2h_0tu=w397-h100-no" alt="ZEthz1NVeuPbHVBZmhJJBqpa uLlvQtq6Wb6A9LCKpPNWycdNggn4FQiBtKby25B06n1pnkIMrfSfNRTmAtkS3l6VbE5lDvMytxEuGg8k VdeVZ2 HTIXnmO 2uNMR4JLXHTGH4ImRw1GTPuQCYqZ39PBiAJ2e 6RzxFXkOQMWWkZPOzfAsG0liF4nobLqVzj4Rwa3EKQ2dmZkJq7t1KS1s2gtltZJ3ks4md0xObEl2naSrp egrYqi8jYhPYBTk62sNSVLPrVSaDMogXnqIWKg4 zUFaXdnVfsj8YRl8FJVNPOJnP7Zmnr3yulME7Rft6Hgk6dVQpyCqII3DTojk9cyDOln2ko4DpTHKSr45raUlyqc9pITcdxW95oTcfI4wVGfXDOVQwwUAOKbtZa6r1TyQX3i4wvKqmXtO4QZMtppdixwIOlV8n xc10V74xaLMPqXs6J42nN2Gp40VDxbZftaCULAhEj99wlgM8itv7UojDvljPwFAMjrCHT6cwHNYqF5YxoW90nWmHNXud b g72mghnOIJcR5M9kh0vDrbw 5XfBLU4Sx7CYZMa60mqTS1 aFt5VG9EpNnR88FMiW2yaDlL14RvrXXDEgi0tNs Gaol6jqWRo5o5uZdYJMG3marjuf cBinDeb5qRy71Oe6q2h 0tu=w397 h100 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>什麼？你照著設定了還是沒有？那很有可能是你的網站只是<a href="https://noter.tw/195/%E4%BD%BF%E7%94%A8-cloudflare-%E4%BB%A3%E7%AE%A1%E4%BD%A0%E7%9A%84%E5%9F%9F%E5%90%8D/" target="_blank" rel="noreferrer noopener" aria-label="透過 Cloudflare 代管 (在新分頁中開啟)" data-wpel-link="internal">透過 Cloudflare 代管</a>，但是並沒有使用 Cloudflare 的 CDN 服務喔！來打開它吧！</p>



<p>最上方選單，點選 DNS 選單</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/jSl058r50BQ770RY4Tss2W4N_o7e1jtTYcFppmwG4zv3CZEcArEYJmmkPbZ03mgjtB5hoNsZZt7iy2zoLcjGxxNgTkSyAdLgdlTX13WuJv1obKyNY3ccb9KNDzV_Sm8vIPpZUxuCyi7JJ0Ei41ZElrE-rM6vf1oTOmqjK_EH6vTAhxA9aGSGYnV4laN1cnWt5JuLyjI0AsyCifTchtfk6vcV_PHGIU5JTeEmpQrRqKqM1EOqc7Zxzs8WQWYLU5DXb8HI7bkz4Nd6JEGsQ40B7TL-5vioKJZmTth_T_IosDtQYtQbIDSD3IB8ewUd7AMAEiTLlzkLRxI0FulYPV8lGn8HWRBX9bzsh1Vm3AGzbGtptrK3HG8JYgQlUug4gTqeOPOLy2cABULBo1qM66su4nXnl3qeiEj5qHcRq5UShmVY0T92NBFfoCZUpy9eAkloayb6XR2mvz3H-bsiaRjPbx-jl1XHeYcgxAcfnrMqfiAm-OIe40jPMCWtV8RADQ_lF0pAQpDx_0MKMrhYQEql0IGycFHDY5PkIZNRY3z7Zk2hHMK7-PXxOgGUod-GJJw9L_BJtAEB9r7qpHIX7YVPNQhblHMRtplc7Edboaf_MNzszHwHcBtXyew2YjfV1JO80k4RyxW0BMdd1cxAa3QPRey-pXBkwv0j=w327-h99-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/jSl058r50BQ770RY4Tss2W4N_o7e1jtTYcFppmwG4zv3CZEcArEYJmmkPbZ03mgjtB5hoNsZZt7iy2zoLcjGxxNgTkSyAdLgdlTX13WuJv1obKyNY3ccb9KNDzV_Sm8vIPpZUxuCyi7JJ0Ei41ZElrE-rM6vf1oTOmqjK_EH6vTAhxA9aGSGYnV4laN1cnWt5JuLyjI0AsyCifTchtfk6vcV_PHGIU5JTeEmpQrRqKqM1EOqc7Zxzs8WQWYLU5DXb8HI7bkz4Nd6JEGsQ40B7TL-5vioKJZmTth_T_IosDtQYtQbIDSD3IB8ewUd7AMAEiTLlzkLRxI0FulYPV8lGn8HWRBX9bzsh1Vm3AGzbGtptrK3HG8JYgQlUug4gTqeOPOLy2cABULBo1qM66su4nXnl3qeiEj5qHcRq5UShmVY0T92NBFfoCZUpy9eAkloayb6XR2mvz3H-bsiaRjPbx-jl1XHeYcgxAcfnrMqfiAm-OIe40jPMCWtV8RADQ_lF0pAQpDx_0MKMrhYQEql0IGycFHDY5PkIZNRY3z7Zk2hHMK7-PXxOgGUod-GJJw9L_BJtAEB9r7qpHIX7YVPNQhblHMRtplc7Edboaf_MNzszHwHcBtXyew2YjfV1JO80k4RyxW0BMdd1cxAa3QPRey-pXBkwv0j=w327-h99-no" alt="jSl058r50BQ770RY4Tss2W4N o7e1jtTYcFppmwG4zv3CZEcArEYJmmkPbZ03mgjtB5hoNsZZt7iy2zoLcjGxxNgTkSyAdLgdlTX13WuJv1obKyNY3ccb9KNDzV Sm8vIPpZUxuCyi7JJ0Ei41ZElrE rM6vf1oTOmqjK EH6vTAhxA9aGSGYnV4laN1cnWt5JuLyjI0AsyCifTchtfk6vcV PHGIU5JTeEmpQrRqKqM1EOqc7Zxzs8WQWYLU5DXb8HI7bkz4Nd6JEGsQ40B7TL 5vioKJZmTth T IosDtQYtQbIDSD3IB8ewUd7AMAEiTLlzkLRxI0FulYPV8lGn8HWRBX9bzsh1Vm3AGzbGtptrK3HG8JYgQlUug4gTqeOPOLy2cABULBo1qM66su4nXnl3qeiEj5qHcRq5UShmVY0T92NBFfoCZUpy9eAkloayb6XR2mvz3H bsiaRjPbx jl1XHeYcgxAcfnrMqfiAm OIe40jPMCWtV8RADQ lF0pAQpDx 0MKMrhYQEql0IGycFHDY5PkIZNRY3z7Zk2hHMK7 PXxOgGUod GJJw9L BJtAEB9r7qpHIX7YVPNQhblHMRtplc7Edboaf MNzszHwHcBtXyew2YjfV1JO80k4RyxW0BMdd1cxAa3QPRey pXBkwv0j=w327 h99 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>點選紅框部份，變成橘色就表示目前該網址服務有通過 CDN，有通過 CDN 的服務 Cloudflare 才有辦法幫忙加上你所安裝上去的 Apps 喔！</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/faOF8fFxauyjCabQ0r0wzZ9Jqi3DPIPpp6UIvb1zqMLrchgMWXeUTNG34Hw7Mbc1hISVFgpB2zql8IvN640bcjiAgMjqb1nl7r2NzZEuO0Dyn6Ch7SZd_gdv7rUKlQobi1-B7E04r7rvgiHU62u_JR9XFWRIFTHWrZjz843UGYJh9NIWDcF2HG3ablLyIPXeLwzD8-ZfYL198cmJQNOlyEvg3ZXV5Un8t0xRCQTsUU3ihaP5myQnZ1bW6OhfGpM6FYSARnLJS4STbd8fv_uXvf1ZSUN0PwCImCbvzRzde1WZMkraSqwh1KJm4LoqQ28qUlDlLu1ncfQ1ZTLgUHq1QVkzOCQZrpcDLg3dVaisOUIasbtSEpyCcOmp4EIALqUUixgYX8RIG7zES1ivvAn2t3UUxZWE8yxLk3wbsOWzoMB8yPXsPqFzM_9SG8WvYXT0mOUJK5vjHhSnAR2Hdy3bwqeAa7fKx3NrZ8jNVIh7OiSEpFIcsftqUM-iu1iPrP_jSBcHHaEmsnLK9ixTs3hcZNvCg7_V1IhU4taZnJbL5wrRC0uuErLMC6tkV-yGMawM5KeFT4i74AmtRWVESJGnuWQa-Y1TCaW444GMKZqm24GkDVBMoX4BizwCPMeyNezBMuqZxd3aW5NhRTjachEU8CvtR624oCkG=w1035-h181-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/faOF8fFxauyjCabQ0r0wzZ9Jqi3DPIPpp6UIvb1zqMLrchgMWXeUTNG34Hw7Mbc1hISVFgpB2zql8IvN640bcjiAgMjqb1nl7r2NzZEuO0Dyn6Ch7SZd_gdv7rUKlQobi1-B7E04r7rvgiHU62u_JR9XFWRIFTHWrZjz843UGYJh9NIWDcF2HG3ablLyIPXeLwzD8-ZfYL198cmJQNOlyEvg3ZXV5Un8t0xRCQTsUU3ihaP5myQnZ1bW6OhfGpM6FYSARnLJS4STbd8fv_uXvf1ZSUN0PwCImCbvzRzde1WZMkraSqwh1KJm4LoqQ28qUlDlLu1ncfQ1ZTLgUHq1QVkzOCQZrpcDLg3dVaisOUIasbtSEpyCcOmp4EIALqUUixgYX8RIG7zES1ivvAn2t3UUxZWE8yxLk3wbsOWzoMB8yPXsPqFzM_9SG8WvYXT0mOUJK5vjHhSnAR2Hdy3bwqeAa7fKx3NrZ8jNVIh7OiSEpFIcsftqUM-iu1iPrP_jSBcHHaEmsnLK9ixTs3hcZNvCg7_V1IhU4taZnJbL5wrRC0uuErLMC6tkV-yGMawM5KeFT4i74AmtRWVESJGnuWQa-Y1TCaW444GMKZqm24GkDVBMoX4BizwCPMeyNezBMuqZxd3aW5NhRTjachEU8CvtR624oCkG=w1035-h181-no" alt="faOF8fFxauyjCabQ0r0wzZ9Jqi3DPIPpp6UIvb1zqMLrchgMWXeUTNG34Hw7Mbc1hISVFgpB2zql8IvN640bcjiAgMjqb1nl7r2NzZEuO0Dyn6Ch7SZd gdv7rUKlQobi1 B7E04r7rvgiHU62u JR9XFWRIFTHWrZjz843UGYJh9NIWDcF2HG3ablLyIPXeLwzD8 ZfYL198cmJQNOlyEvg3ZXV5Un8t0xRCQTsUU3ihaP5myQnZ1bW6OhfGpM6FYSARnLJS4STbd8fv uXvf1ZSUN0PwCImCbvzRzde1WZMkraSqwh1KJm4LoqQ28qUlDlLu1ncfQ1ZTLgUHq1QVkzOCQZrpcDLg3dVaisOUIasbtSEpyCcOmp4EIALqUUixgYX8RIG7zES1ivvAn2t3UUxZWE8yxLk3wbsOWzoMB8yPXsPqFzM 9SG8WvYXT0mOUJK5vjHhSnAR2Hdy3bwqeAa7fKx3NrZ8jNVIh7OiSEpFIcsftqUM iu1iPrP jSBcHHaEmsnLK9ixTs3hcZNvCg7 V1IhU4taZnJbL5wrRC0uuErLMC6tkV yGMawM5KeFT4i74AmtRWVESJGnuWQa Y1TCaW444GMKZqm24GkDVBMoX4BizwCPMeyNezBMuqZxd3aW5NhRTjachEU8CvtR624oCkG=w1035 h181 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p>不過還是有點小小的問題，小蛙還不知道怎麼處理，不過沒有什麼太大的影響，想說就先放著，就是 &#8230; 它連後台也加上了，變成這個分享按鈕會擋到自己的選單 &#8230; </p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/ENDd5BZBpBpANnBI6mvTFzijYMr-QOlbQAN7EO7FDIBlASXcNOodVZKPy4tSRj2mjejqCN3vPVW7GVFtcuegZnjcjCHkC6rM_VdrQzssmFUYBLZ-qAjG28xPmX0p0ebtsafwLsJztQvgH9riwPNtkZhp5skXm4i4FQXY23c1iKaByplmwihcEP-IWFd8v5fqgsGyPvY02FrxabmlW7lXAL76bo290qFpku8fpeYs_kSK-UQdZkEwi64_Li9V0yCStmIL7WNObCfwkGsUB55191irnLmrOXvYJyN1Kt3b8pLfYsmzjHoR4WfH5b8v19W1oIZTYWGhnhlqjGjPbYzZNgR0UY4LuasNDo_lATDtrWqSLkYO9maqS97X98NGrz_aQOfWwA0C_jA-KSnVGB5qqHVn4zpArTj1jdC4UkuKHXNQuuwDERnLMShdGBqdzMKB6xELSr_cbN2zjGZs75T2pGERXV0aeKij7g25-IpEe8xTJryxqukn_W7j8b1ne90TMcuHkhVp77e9q5mudoVPf6NuJX8WIGugx5ZDj3CYgDFE-abSLqzqIKqLctOmYxDIxGEyfKHOfLwh_BhTctKTYieyep0R_Pa6GCDXH1c571uTIdY_Uf8gT4jMealquz2Ny1ayFihGLT-hVAwHNPTAxBeLkw86qqfY=w157-h335-no" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/ENDd5BZBpBpANnBI6mvTFzijYMr-QOlbQAN7EO7FDIBlASXcNOodVZKPy4tSRj2mjejqCN3vPVW7GVFtcuegZnjcjCHkC6rM_VdrQzssmFUYBLZ-qAjG28xPmX0p0ebtsafwLsJztQvgH9riwPNtkZhp5skXm4i4FQXY23c1iKaByplmwihcEP-IWFd8v5fqgsGyPvY02FrxabmlW7lXAL76bo290qFpku8fpeYs_kSK-UQdZkEwi64_Li9V0yCStmIL7WNObCfwkGsUB55191irnLmrOXvYJyN1Kt3b8pLfYsmzjHoR4WfH5b8v19W1oIZTYWGhnhlqjGjPbYzZNgR0UY4LuasNDo_lATDtrWqSLkYO9maqS97X98NGrz_aQOfWwA0C_jA-KSnVGB5qqHVn4zpArTj1jdC4UkuKHXNQuuwDERnLMShdGBqdzMKB6xELSr_cbN2zjGZs75T2pGERXV0aeKij7g25-IpEe8xTJryxqukn_W7j8b1ne90TMcuHkhVp77e9q5mudoVPf6NuJX8WIGugx5ZDj3CYgDFE-abSLqzqIKqLctOmYxDIxGEyfKHOfLwh_BhTctKTYieyep0R_Pa6GCDXH1c571uTIdY_Uf8gT4jMealquz2Ny1ayFihGLT-hVAwHNPTAxBeLkw86qqfY=w157-h335-no" alt="ENDd5BZBpBpANnBI6mvTFzijYMr QOlbQAN7EO7FDIBlASXcNOodVZKPy4tSRj2mjejqCN3vPVW7GVFtcuegZnjcjCHkC6rM VdrQzssmFUYBLZ qAjG28xPmX0p0ebtsafwLsJztQvgH9riwPNtkZhp5skXm4i4FQXY23c1iKaByplmwihcEP IWFd8v5fqgsGyPvY02FrxabmlW7lXAL76bo290qFpku8fpeYs kSK UQdZkEwi64 Li9V0yCStmIL7WNObCfwkGsUB55191irnLmrOXvYJyN1Kt3b8pLfYsmzjHoR4WfH5b8v19W1oIZTYWGhnhlqjGjPbYzZNgR0UY4LuasNDo lATDtrWqSLkYO9maqS97X98NGrz aQOfWwA0C jA KSnVGB5qqHVn4zpArTj1jdC4UkuKHXNQuuwDERnLMShdGBqdzMKB6xELSr cbN2zjGZs75T2pGERXV0aeKij7g25 IpEe8xTJryxqukn W7j8b1ne90TMcuHkhVp77e9q5mudoVPf6NuJX8WIGugx5ZDj3CYgDFE abSLqzqIKqLctOmYxDIxGEyfKHOfLwh BhTctKTYieyep0R Pa6GCDXH1c571uTIdY Uf8gT4jMealquz2Ny1ayFihGLT hVAwHNPTAxBeLkw86qqfY=w157 h335 no 使用 Cloudflare AddToAny Share Buttons 來分享你的網站" title="使用 Cloudflare AddToAny Share Buttons 來分享你的網站"></a></figure></div>



<p><strong>Cloudflare 系列文章：</strong></p>



<ul class="my-li bg-darkblue wp-block-list"><li><a href="https://noter.tw/117/cloudflare-%e8%b6%85%e5%bc%b7%e5%a4%a7%e7%9a%84%e5%85%8d%e8%b2%bb-cdn/" data-wpel-link="internal">Cloudflare – 超強大的免費 CDN (?)</a></li><li><a href="https://noter.tw/195/%e4%bd%bf%e7%94%a8-cloudflare-%e4%bb%a3%e7%ae%a1%e4%bd%a0%e7%9a%84%e5%9f%9f%e5%90%8d/" data-wpel-link="internal">使用 Cloudflare 代管你的域名</a></li><li><a href="https://noter.tw/4597/%E4%BD%BF%E7%94%A8-cloudflare-addtoany-share-buttons-%E4%BE%86%E5%88%86%E4%BA%AB%E4%BD%A0%E7%9A%84%E7%B6%B2%E7%AB%99/" data-wpel-link="internal">使用 Cloudflare AddToAny Share Buttons 來分享你的網站</a></li></ul>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/4597/%e4%bd%bf%e7%94%a8-cloudflare-addtoany-share-buttons-%e4%be%86%e5%88%86%e4%ba%ab%e4%bd%a0%e7%9a%84%e7%b6%b2%e7%ab%99/" data-wpel-link="internal">使用 Cloudflare AddToAny Share Buttons 來分享你的網站</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/4597/%e4%bd%bf%e7%94%a8-cloudflare-addtoany-share-buttons-%e4%be%86%e5%88%86%e4%ba%ab%e4%bd%a0%e7%9a%84%e7%b6%b2%e7%ab%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>強化 WordPress 搜尋功能 &#8211; Search &#038; Filter + Toolset Types</title>
		<link>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/</link>
					<comments>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/#comments</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Sun, 23 Dec 2018 14:56:25 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Search and Filter]]></category>
		<category><![CDATA[外掛]]></category>
		<category><![CDATA[Toolset]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=4262</guid>

					<description><![CDATA[<p>有朋友詢問小蛙 WordPress 的搜尋能否加入其他的條件設定，也就是一般我們理解的進階檢索，而不是只有單一搜尋框的搜尋方式，這篇文章記錄怎麼透過外掛來做到這件事情。 目的 WordPress 本身&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" 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 搜尋功能 &#8211; Search &#038; Filter + Toolset Types</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>有朋友詢問小蛙 WordPress 的搜尋能否加入其他的條件設定，也就是一般我們理解的進階檢索，而不是只有單一搜尋框的搜尋方式，這篇文章記錄怎麼透過外掛來做到這件事情。</p>



<span id="more-4262"></span>



<h2 class="para wp-block-heading">目的</h2>



<p>WordPress 本身提供了一個基本搜尋框，有點像 Google 一樣，單一搜尋框就可以搜尋任何你想要搜尋的字，簡單明瞭，但是有些情況下希望可以讓使用者作更多方面的搜尋，例如：在某些文章中加入特定屬性，搜尋的時候可以透過這些屬性來進行二次過濾。這樣講可能有點籠統，這邊舉一個實際的例子來運用。</p>



<p>假設現在有一個旅遊景點的網站，小蛙可能會希望除了景點之外還能做其他搜尋，像搜尋臺北，理所當然列出了所有包含「臺北」的內容，但有些時候使用者希望限縮搜尋條件「臺北市裡面的汐止區跟北投區」的結果，或是條件可以自己換「臺北市的名勝古蹟或海水浴場」 &#8230; 等，透過兩個外掛的合作就可以做到這件事情。</p>



<h2 class="para wp-block-heading">安裝所需外掛</h2>



<h3 class="para wp-block-heading">Toolset Types 外掛</h3>



<p><a href="https://wordpress.org/plugins/types/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">點我<span class="wpel-icon wpel-image wpel-icon-6"></span></a>開啟外掛連結。</p>



<p>這個外掛小蛙是最近才發現的，他非常方便，可以額外透過 taxonomy 的方式，附加更多屬性(or 分類)到文章上，他還有很多其他功能，但小蛙在這邊只有用到分類的部份，如上面的例子，小蛙想要在「分類」的部份加入臺北市，然後透過 Toolset Types 往下細分臺北市/新北市的各區。</p>



<p>安裝好外掛後，點選 Toolset -&gt; 分類</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/2TNCPaqxhC5xA6S60MO6CqrvBxQRoIDMsER5ZDfXnnXn-B-utHzBfZVkCxYHelWg5JO_RRTAtnANpzmNBi9FyfXwIEdZuRICPFzmny_VV2-kyQJ99XB4v1v1GlpI41sDHPKZ-5YTQaKW-es8QrKe_5mPBYLCr3RAfG9UySRqBbdb3UK91mtPi7PHSYd_hejW13ur4T4gbw-F8yhGAKwTLf0j1PUNnT25kqr974imZwb6ossD5IUd7m9bpfG0xTmVd4NW6_caXY1R0HHrzqaTZTvkE0BTPC8TiCN1xQRcdeLtFWY79Q293Vd94CYlEZklO4qQ4a52YZgwM6HF_nc3hATyykcONypzzbTYoDlc2W29D3Ap6OYpFMagfQng18gtomvy64LDiT4UWtCDAA5YPpzAVRci9LncsYmt6ii8LZaq9PbJAENRdqOtsWxlGkZ892MmDslqQUOdt8Dxm7Oc0Zhz7Vp0JPhmoAu4kepeJweK_iBWfEtIXdK2SacP7UsveOHHRn57c0FN5AmhFv82jEeIcBrzgqetXs3GCliRy280sJ1SdtNzAbidFSjCy5tZl5N2qRGj81LI307I3gky4OOkXJ8PMM56XzQ4y_CyCHUnsKLXZYVz-32hLRIlNqZVOwfGaqRlmRMGH3pxb9Js9BXvRQ=w361-h273-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/2TNCPaqxhC5xA6S60MO6CqrvBxQRoIDMsER5ZDfXnnXn-B-utHzBfZVkCxYHelWg5JO_RRTAtnANpzmNBi9FyfXwIEdZuRICPFzmny_VV2-kyQJ99XB4v1v1GlpI41sDHPKZ-5YTQaKW-es8QrKe_5mPBYLCr3RAfG9UySRqBbdb3UK91mtPi7PHSYd_hejW13ur4T4gbw-F8yhGAKwTLf0j1PUNnT25kqr974imZwb6ossD5IUd7m9bpfG0xTmVd4NW6_caXY1R0HHrzqaTZTvkE0BTPC8TiCN1xQRcdeLtFWY79Q293Vd94CYlEZklO4qQ4a52YZgwM6HF_nc3hATyykcONypzzbTYoDlc2W29D3Ap6OYpFMagfQng18gtomvy64LDiT4UWtCDAA5YPpzAVRci9LncsYmt6ii8LZaq9PbJAENRdqOtsWxlGkZ892MmDslqQUOdt8Dxm7Oc0Zhz7Vp0JPhmoAu4kepeJweK_iBWfEtIXdK2SacP7UsveOHHRn57c0FN5AmhFv82jEeIcBrzgqetXs3GCliRy280sJ1SdtNzAbidFSjCy5tZl5N2qRGj81LI307I3gky4OOkXJ8PMM56XzQ4y_CyCHUnsKLXZYVz-32hLRIlNqZVOwfGaqRlmRMGH3pxb9Js9BXvRQ=w361-h273-no" alt="2TNCPaqxhC5xA6S60MO6CqrvBxQRoIDMsER5ZDfXnnXn B utHzBfZVkCxYHelWg5JO RRTAtnANpzmNBi9FyfXwIEdZuRICPFzmny VV2 kyQJ99XB4v1v1GlpI41sDHPKZ 5YTQaKW es8QrKe 5mPBYLCr3RAfG9UySRqBbdb3UK91mtPi7PHSYd hejW13ur4T4gbw F8yhGAKwTLf0j1PUNnT25kqr974imZwb6ossD5IUd7m9bpfG0xTmVd4NW6 caXY1R0HHrzqaTZTvkE0BTPC8TiCN1xQRcdeLtFWY79Q293Vd94CYlEZklO4qQ4a52YZgwM6HF nc3hATyykcONypzzbTYoDlc2W29D3Ap6OYpFMagfQng18gtomvy64LDiT4UWtCDAA5YPpzAVRci9LncsYmt6ii8LZaq9PbJAENRdqOtsWxlGkZ892MmDslqQUOdt8Dxm7Oc0Zhz7Vp0JPhmoAu4kepeJweK iBWfEtIXdK2SacP7UsveOHHRn57c0FN5AmhFv82jEeIcBrzgqetXs3GCliRy280sJ1SdtNzAbidFSjCy5tZl5N2qRGj81LI307I3gky4OOkXJ8PMM56XzQ4y CyCHUnsKLXZYVz 32hLRIlNqZVOwfGaqRlmRMGH3pxb9Js9BXvRQ=w361 h273 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>小蛙新增了一個新的分類叫做地點，新增的時候會有很多選項，除非有特殊需求或是看得懂設定的意思，不然小蛙是直接用預設</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/x6dSuYNjKOB0-rZZchMV4we5gJ0rSmltxaxxYDpkjN4gZjnI8oveCrZMXceOnaFTr9e5hJFoge_mluu0miVyHeBkGowOqT6xt14fv60mdHfUmaiLFIFoNFLGew4vmrXx0knUWv6m7X-RvrMulj09pNV2quebnSll6IYYWUcavSNqYFIMeNEBuBks5w-XCAlDGjRlVODwAGkvVjk6zWjHf5QVVc0s39tOymmBX40Z86-ZZtoQScx_24PYsFBsZXgViG_jKI0enIIB9ynhrS_jyQs_QaPvF7uM430hGvE-hz0_JtN85t_uRtcn9KlTh78iHw0Ug8hDHUpg_ka9_kjtAU91d-wtr8rN34RBgrzYJlfP3-BwOlj56SZcLVT95etinVu1fM5OlfY2RAwnSHUMkN--58RT6fcZjItEan18lUIwoiKgVGwXEsY_viud9vgPk9KQJ9-dSfGrtE-rHf3zW5GYwi9XtwRemkdHWYxBaNLw0N0ia8F6ygSwuaWtYMhmpa9arVIheR77NAS9j9ieJR_NEUDCfHu0OiLfrZeT4S-dNGcEQtcmjDyqrhzZrgd9RwiDKGeAQWK99I1WxKFOqbUNhmFQ1Jzzfw0oUeN2_zqd6nfxpPoaEqefjNeeVZs4T9z9PYtW6Y5ZNUKXq6nt5x1Zmw=w680-h282-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/x6dSuYNjKOB0-rZZchMV4we5gJ0rSmltxaxxYDpkjN4gZjnI8oveCrZMXceOnaFTr9e5hJFoge_mluu0miVyHeBkGowOqT6xt14fv60mdHfUmaiLFIFoNFLGew4vmrXx0knUWv6m7X-RvrMulj09pNV2quebnSll6IYYWUcavSNqYFIMeNEBuBks5w-XCAlDGjRlVODwAGkvVjk6zWjHf5QVVc0s39tOymmBX40Z86-ZZtoQScx_24PYsFBsZXgViG_jKI0enIIB9ynhrS_jyQs_QaPvF7uM430hGvE-hz0_JtN85t_uRtcn9KlTh78iHw0Ug8hDHUpg_ka9_kjtAU91d-wtr8rN34RBgrzYJlfP3-BwOlj56SZcLVT95etinVu1fM5OlfY2RAwnSHUMkN--58RT6fcZjItEan18lUIwoiKgVGwXEsY_viud9vgPk9KQJ9-dSfGrtE-rHf3zW5GYwi9XtwRemkdHWYxBaNLw0N0ia8F6ygSwuaWtYMhmpa9arVIheR77NAS9j9ieJR_NEUDCfHu0OiLfrZeT4S-dNGcEQtcmjDyqrhzZrgd9RwiDKGeAQWK99I1WxKFOqbUNhmFQ1Jzzfw0oUeN2_zqd6nfxpPoaEqefjNeeVZs4T9z9PYtW6Y5ZNUKXq6nt5x1Zmw=w680-h282-no" alt="x6dSuYNjKOB0 rZZchMV4we5gJ0rSmltxaxxYDpkjN4gZjnI8oveCrZMXceOnaFTr9e5hJFoge mluu0miVyHeBkGowOqT6xt14fv60mdHfUmaiLFIFoNFLGew4vmrXx0knUWv6m7X RvrMulj09pNV2quebnSll6IYYWUcavSNqYFIMeNEBuBks5w XCAlDGjRlVODwAGkvVjk6zWjHf5QVVc0s39tOymmBX40Z86 ZZtoQScx 24PYsFBsZXgViG jKI0enIIB9ynhrS jyQs QaPvF7uM430hGvE hz0 JtN85t uRtcn9KlTh78iHw0Ug8hDHUpg ka9 kjtAU91d wtr8rN34RBgrzYJlfP3 BwOlj56SZcLVT95etinVu1fM5OlfY2RAwnSHUMkN 58RT6fcZjItEan18lUIwoiKgVGwXEsY viud9vgPk9KQJ9 dSfGrtE rHf3zW5GYwi9XtwRemkdHWYxBaNLw0N0ia8F6ygSwuaWtYMhmpa9arVIheR77NAS9j9ieJR NEUDCfHu0OiLfrZeT4S dNGcEQtcmjDyqrhzZrgd9RwiDKGeAQWK99I1WxKFOqbUNhmFQ1Jzzfw0oUeN2 zqd6nfxpPoaEqefjNeeVZs4T9z9PYtW6Y5ZNUKXq6nt5x1Zmw=w680 h282 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>新增完之後可以發現，文章的選單下面多了一個「地點」的選項</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/wG9tdbin99C2Y0fxpeXbM57G3QuUhQOckrL8XwcCg0RL6qbx9AJaaPpR_3cMv_94IP6rhdcS-wGbErb213lq2Zg9W-GtFp00MqBlnk1VavqCsCbi48SZwlgr1VEMbvEj-kUL2-O4kgGi1mCYjRxe6UImAskCdcqD_HEYGmqd75un7ZPUx5cJbNpUVomhLZlED6i30b_vjcA3G3sryxPvlncSHdLjJCK-ZN_ACjnjnN1JMfn0iR0ikcbwmQYM8C7U-9VDJYx9rX_aLDsHw8V7vTpI_zLpgF6fiA_TuPcEHNmjxuME8tYFJLzGr-aFs_ZTRynlWODc2t70tWQ3QL_iJbKNYyWhZva1ylNlLlv6-uACncDAfICCIsQYfzWqCIW362gvC_0Mup6tLr1fk-C7hIpVjN_yRyYuh3efueGz2-fz2eeddpWA2q_AArMl9KxBCLwc48nHqqgcUp7RUdEAXiKYMITaO9Wf53EjrCTZ1ESKXlJi5aachdIzKFddtRg2svcQUl08Ibcm78swmFsKxJTnfm8DYaN1c9XEH-fDBPOEzTyFgr_EpvPTM2CMh87a8QLKWGNVoM9wKd7cFDHgN-HdYdWXgLNikQQ_Uc2vVbBDpmyGSUXbxwtYJ1XA7eIZ2RpZF9RRq5zhGRWWEBlowfygqw=w358-h206-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/wG9tdbin99C2Y0fxpeXbM57G3QuUhQOckrL8XwcCg0RL6qbx9AJaaPpR_3cMv_94IP6rhdcS-wGbErb213lq2Zg9W-GtFp00MqBlnk1VavqCsCbi48SZwlgr1VEMbvEj-kUL2-O4kgGi1mCYjRxe6UImAskCdcqD_HEYGmqd75un7ZPUx5cJbNpUVomhLZlED6i30b_vjcA3G3sryxPvlncSHdLjJCK-ZN_ACjnjnN1JMfn0iR0ikcbwmQYM8C7U-9VDJYx9rX_aLDsHw8V7vTpI_zLpgF6fiA_TuPcEHNmjxuME8tYFJLzGr-aFs_ZTRynlWODc2t70tWQ3QL_iJbKNYyWhZva1ylNlLlv6-uACncDAfICCIsQYfzWqCIW362gvC_0Mup6tLr1fk-C7hIpVjN_yRyYuh3efueGz2-fz2eeddpWA2q_AArMl9KxBCLwc48nHqqgcUp7RUdEAXiKYMITaO9Wf53EjrCTZ1ESKXlJi5aachdIzKFddtRg2svcQUl08Ibcm78swmFsKxJTnfm8DYaN1c9XEH-fDBPOEzTyFgr_EpvPTM2CMh87a8QLKWGNVoM9wKd7cFDHgN-HdYdWXgLNikQQ_Uc2vVbBDpmyGSUXbxwtYJ1XA7eIZ2RpZF9RRq5zhGRWWEBlowfygqw=w358-h206-no" alt="wG9tdbin99C2Y0fxpeXbM57G3QuUhQOckrL8XwcCg0RL6qbx9AJaaPpR 3cMv 94IP6rhdcS wGbErb213lq2Zg9W GtFp00MqBlnk1VavqCsCbi48SZwlgr1VEMbvEj kUL2 O4kgGi1mCYjRxe6UImAskCdcqD HEYGmqd75un7ZPUx5cJbNpUVomhLZlED6i30b vjcA3G3sryxPvlncSHdLjJCK ZN ACjnjnN1JMfn0iR0ikcbwmQYM8C7U 9VDJYx9rX aLDsHw8V7vTpI zLpgF6fiA TuPcEHNmjxuME8tYFJLzGr aFs ZTRynlWODc2t70tWQ3QL iJbKNYyWhZva1ylNlLlv6 uACncDAfICCIsQYfzWqCIW362gvC 0Mup6tLr1fk C7hIpVjN yRyYuh3efueGz2 fz2eeddpWA2q AArMl9KxBCLwc48nHqqgcUp7RUdEAXiKYMITaO9Wf53EjrCTZ1ESKXlJi5aachdIzKFddtRg2svcQUl08Ibcm78swmFsKxJTnfm8DYaN1c9XEH fDBPOEzTyFgr EpvPTM2CMh87a8QLKWGNVoM9wKd7cFDHgN HdYdWXgLNikQQ Uc2vVbBDpmyGSUXbxwtYJ1XA7eIZ2RpZF9RRq5zhGRWWEBlowfygqw=w358 h206 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>進入「地點」選項之後可以開始建立自己要增加的選項</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/ToVXqBab_bYD0UlMByf25jl7SuGf1fc-BAYmkbVuDVEEQG5DeEHxoaHW5NVXBkjWfnnUgJ4wJzpFsUWNDuRJw99OfUnvpVV7yt3q3iLx-ivkHtOqjndkfZ6GGPy3bnkmJlgxdBG1bvl1W92EgdpEHh9mFdJW-_b5yyU3lK0BZDjdCqX-u8NADjtUeLU_T_jOcM4YLBT0kzhLyUb5xjTkBDgi0J44rpqokPJwrqUkkDSjEalLJdrtuIB0U_KbEBK6YUA1zzyP5aIjghEoz7sN2DUGyQ_1B5PPJ-pR96rdYynlPz0f95s3GFHC2YFH1cbQaqmXj1nZkJcHAFW7T52RdmqVWZaeuXc2AlW8Vrql4Esv1FrEySoD5kwbMqHGh1Nzu07HMgK1z3gk1pIM0Ep2TprzVsFoazp9T-OG3f6BwHknvMgn0IcmQktPerBzXSaoq3x--EIW5hYHdnABpML4m0bykN9m9B4FVBEfQhYulOjVivX2QMxII-fu2XYnCJyVtEL-TsmTNZJ_KCRyRmzXRlfOLMKP0ls3cXn0cw8X89APW5MBAPIUYl25OmIGwi7EPtX3uh_Z5G0yMllJ6UBL0yWKgEJ2SX0-6HsomgEtmHkmCszmazp7BE6SVD512jFrxToiJm0_-l2-kQaOnR5pAEk-CA=w864-h747-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/ToVXqBab_bYD0UlMByf25jl7SuGf1fc-BAYmkbVuDVEEQG5DeEHxoaHW5NVXBkjWfnnUgJ4wJzpFsUWNDuRJw99OfUnvpVV7yt3q3iLx-ivkHtOqjndkfZ6GGPy3bnkmJlgxdBG1bvl1W92EgdpEHh9mFdJW-_b5yyU3lK0BZDjdCqX-u8NADjtUeLU_T_jOcM4YLBT0kzhLyUb5xjTkBDgi0J44rpqokPJwrqUkkDSjEalLJdrtuIB0U_KbEBK6YUA1zzyP5aIjghEoz7sN2DUGyQ_1B5PPJ-pR96rdYynlPz0f95s3GFHC2YFH1cbQaqmXj1nZkJcHAFW7T52RdmqVWZaeuXc2AlW8Vrql4Esv1FrEySoD5kwbMqHGh1Nzu07HMgK1z3gk1pIM0Ep2TprzVsFoazp9T-OG3f6BwHknvMgn0IcmQktPerBzXSaoq3x--EIW5hYHdnABpML4m0bykN9m9B4FVBEfQhYulOjVivX2QMxII-fu2XYnCJyVtEL-TsmTNZJ_KCRyRmzXRlfOLMKP0ls3cXn0cw8X89APW5MBAPIUYl25OmIGwi7EPtX3uh_Z5G0yMllJ6UBL0yWKgEJ2SX0-6HsomgEtmHkmCszmazp7BE6SVD512jFrxToiJm0_-l2-kQaOnR5pAEk-CA=w864-h747-no" alt="ToVXqBab bYD0UlMByf25jl7SuGf1fc BAYmkbVuDVEEQG5DeEHxoaHW5NVXBkjWfnnUgJ4wJzpFsUWNDuRJw99OfUnvpVV7yt3q3iLx ivkHtOqjndkfZ6GGPy3bnkmJlgxdBG1bvl1W92EgdpEHh9mFdJW b5yyU3lK0BZDjdCqX u8NADjtUeLU T jOcM4YLBT0kzhLyUb5xjTkBDgi0J44rpqokPJwrqUkkDSjEalLJdrtuIB0U KbEBK6YUA1zzyP5aIjghEoz7sN2DUGyQ 1B5PPJ pR96rdYynlPz0f95s3GFHC2YFH1cbQaqmXj1nZkJcHAFW7T52RdmqVWZaeuXc2AlW8Vrql4Esv1FrEySoD5kwbMqHGh1Nzu07HMgK1z3gk1pIM0Ep2TprzVsFoazp9T OG3f6BwHknvMgn0IcmQktPerBzXSaoq3x EIW5hYHdnABpML4m0bykN9m9B4FVBEfQhYulOjVivX2QMxII fu2XYnCJyVtEL TsmTNZJ KCRyRmzXRlfOLMKP0ls3cXn0cw8X89APW5MBAPIUYl25OmIGwi7EPtX3uh Z5G0yMllJ6UBL0yWKgEJ2SX0 6HsomgEtmHkmCszmazp7BE6SVD512jFrxToiJm0 l2 kQaOnR5pAEk CA=w864 h747 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>建立好地點之後，便可以開始寫文章了，文章的版面也同樣此時出現了「地點」的選項，如此一來就可以讓文章有「臺北市的分類」又可以有「南港的地點(taxonomy)」</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/JqHv_AVR6NVuPNSw3WggtfGRWAa1PskUqPZpZ3rSfSjlG3FKRR72au1VumUqMKVlLni_-pcNL87mHKViTd0LxG41-Bs1p9jJiwFP_rGCcizTd2Jn3RtknGk6mOf3leP6oESt2PlOHh86C7aifKN_5jAbMfAMTXTJ0X50F20eSCfPmXlhErEENvVoFK8iDSQff9YNswTbFG3DZapqKOUfaeLOi-K5yf_2aN3cG3yIR56SnxVe7JwJtaFNnws9czdbtohq1cTkXce_e84t6vZ4dzoC7kTaFBEjFVyMJPuAWQ9LFxF2hb0j5m6ZUO333d9XHK8A3AcozYo9V4D3N0XK4uSDpepsPdniUTH8sDnfBUhT302S_9b8u4RIHQcFpUG6abdgvAm1908eUu5o2Hah4zuHLfXVHDHdLvdsmvQTqMnRSif2NY-_Cqv11NAHHSWqRsdIb8nfx50jbLzkejPiPj__uO6T7uHvF8ZlbazV1obBIWWbxgnKPAm50ryHsnOx7jQBX-uVKZXGgpNOe_Ki2lNAKnort5K96l7b5dbI7BIbmq7tJh4qbGBZNLQ71M7WZjy6o9CaPlh2ZmzhlawrXw-V-M6oL_LAoAYNUrmtFFffAIGcqrpVdV9bjCeaiOYfHQazETzg1u-SF2UpLV7waNBxcg=w923-h708-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/JqHv_AVR6NVuPNSw3WggtfGRWAa1PskUqPZpZ3rSfSjlG3FKRR72au1VumUqMKVlLni_-pcNL87mHKViTd0LxG41-Bs1p9jJiwFP_rGCcizTd2Jn3RtknGk6mOf3leP6oESt2PlOHh86C7aifKN_5jAbMfAMTXTJ0X50F20eSCfPmXlhErEENvVoFK8iDSQff9YNswTbFG3DZapqKOUfaeLOi-K5yf_2aN3cG3yIR56SnxVe7JwJtaFNnws9czdbtohq1cTkXce_e84t6vZ4dzoC7kTaFBEjFVyMJPuAWQ9LFxF2hb0j5m6ZUO333d9XHK8A3AcozYo9V4D3N0XK4uSDpepsPdniUTH8sDnfBUhT302S_9b8u4RIHQcFpUG6abdgvAm1908eUu5o2Hah4zuHLfXVHDHdLvdsmvQTqMnRSif2NY-_Cqv11NAHHSWqRsdIb8nfx50jbLzkejPiPj__uO6T7uHvF8ZlbazV1obBIWWbxgnKPAm50ryHsnOx7jQBX-uVKZXGgpNOe_Ki2lNAKnort5K96l7b5dbI7BIbmq7tJh4qbGBZNLQ71M7WZjy6o9CaPlh2ZmzhlawrXw-V-M6oL_LAoAYNUrmtFFffAIGcqrpVdV9bjCeaiOYfHQazETzg1u-SF2UpLV7waNBxcg=w923-h708-no" alt="JqHv AVR6NVuPNSw3WggtfGRWAa1PskUqPZpZ3rSfSjlG3FKRR72au1VumUqMKVlLni pcNL87mHKViTd0LxG41 Bs1p9jJiwFP rGCcizTd2Jn3RtknGk6mOf3leP6oESt2PlOHh86C7aifKN 5jAbMfAMTXTJ0X50F20eSCfPmXlhErEENvVoFK8iDSQff9YNswTbFG3DZapqKOUfaeLOi K5yf 2aN3cG3yIR56SnxVe7JwJtaFNnws9czdbtohq1cTkXce e84t6vZ4dzoC7kTaFBEjFVyMJPuAWQ9LFxF2hb0j5m6ZUO333d9XHK8A3AcozYo9V4D3N0XK4uSDpepsPdniUTH8sDnfBUhT302S 9b8u4RIHQcFpUG6abdgvAm1908eUu5o2Hah4zuHLfXVHDHdLvdsmvQTqMnRSif2NY Cqv11NAHHSWqRsdIb8nfx50jbLzkejPiPj uO6T7uHvF8ZlbazV1obBIWWbxgnKPAm50ryHsnOx7jQBX uVKZXGgpNOe Ki2lNAKnort5K96l7b5dbI7BIbmq7tJh4qbGBZNLQ71M7WZjy6o9CaPlh2ZmzhlawrXw V M6oL LAoAYNUrmtFFffAIGcqrpVdV9bjCeaiOYfHQazETzg1u SF2UpLV7waNBxcg=w923 h708 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>到這邊前置作業就完成了，接下來開始設定 Search 部份。</p>



<h3 class="para wp-block-heading">Search &amp; Filter 外掛</h3>



<p><a href="https://wordpress.org/plugins/search-filter/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">點我<span class="wpel-icon wpel-image wpel-icon-6"></span></a>開啟外掛連結。<a href="http://docs.designsandcode.com/search-filter/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">點我<span class="wpel-icon wpel-image wpel-icon-6"></span></a>開啟教學文件。</p>



<p>Search &amp; Filter 是一個非常強大的外掛，有免費版本跟付費版本，小蛙這邊只會使用到免費功能，他可以直接透過 shortcode 的方式在自己想要的地方插入搜尋功能，而且這個搜尋功能不只是基本的搜尋框，可以在搜尋框上附加上其他屬性，例如文章類型、文章分類、taxonomy &#8230; 等，這些都是 WordPress 預設沒有的，立馬開始吧！</p>



<p>基本語法大概是長這樣</p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">[searchandfilter fields="search,category,post_tag"]</pre>



<p>fields 是要產生搜尋的類型，search 是基本搜尋框、category 是分類，post_tag 是文章標籤，<a href="http://docs.designsandcode.com/search-filter/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">這邊<span class="wpel-icon wpel-image wpel-icon-6"></span></a>可以看到更多其他可用欄位，都是以一段 shortcode 配上一張結果圖片的方式來介紹用法。</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/cqciNhjVtP3bpO-XeVRiji_VB32p7kV_COMLVRI9qP-lNJ-xJBg91bO0uaQWDGJOrjUg1TbimNG2KIZu89Ap3rlg4VMG5MOQl36jgWCl1I4YVA6KlCkGPeeThXYgMFjmer2dfh-C_K4mHUIwsEoK6dvBVOYWObj6PHn1p51ezOHdw1u-5hRkR4Ogt6IjiH9uA3SO6KK6U_-rsEGeESjq6Fdz7_Maieg2nQLR1MSCC--5LvswGRvZcoCS7E_Z31EMxpCl1tiIn56mKYAeN7qESZUygaDtfiUGBKXq8ABF_MR4U2Fz5lAhzVoSIaxxGmm-fc5Lg7tKdCVo2n5IU_vl0Q932BC2MikUQbhPbwLiD9T6g93Rz2NemzpWmWklJfWNGxPZuHestb5X1T0UiaaaR4hNKulfXPz4EIQNAKbAEfBD9S5_GPmKPhtmJUKC2I1zqb9JiX5DcoToc1Htn4SLHovmz8zZGNoMZYXBrA2bwzp0WF7nAS0eGjcMglQL1T-tATQz_6rxS5ybp5qPiV8OvCsWL6_FXxyiHJjVodoyyfuaRPniY7QsxC_D-v3xEIj_0JDryA7Uk4AYGJr194BbRARt29JUxxbEIjil-nq29b1OEQpNnvq3oXn7GAxTFbKh14KKkzLzTKVD-9-xjbdIOR72FQ=w603-h490-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/cqciNhjVtP3bpO-XeVRiji_VB32p7kV_COMLVRI9qP-lNJ-xJBg91bO0uaQWDGJOrjUg1TbimNG2KIZu89Ap3rlg4VMG5MOQl36jgWCl1I4YVA6KlCkGPeeThXYgMFjmer2dfh-C_K4mHUIwsEoK6dvBVOYWObj6PHn1p51ezOHdw1u-5hRkR4Ogt6IjiH9uA3SO6KK6U_-rsEGeESjq6Fdz7_Maieg2nQLR1MSCC--5LvswGRvZcoCS7E_Z31EMxpCl1tiIn56mKYAeN7qESZUygaDtfiUGBKXq8ABF_MR4U2Fz5lAhzVoSIaxxGmm-fc5Lg7tKdCVo2n5IU_vl0Q932BC2MikUQbhPbwLiD9T6g93Rz2NemzpWmWklJfWNGxPZuHestb5X1T0UiaaaR4hNKulfXPz4EIQNAKbAEfBD9S5_GPmKPhtmJUKC2I1zqb9JiX5DcoToc1Htn4SLHovmz8zZGNoMZYXBrA2bwzp0WF7nAS0eGjcMglQL1T-tATQz_6rxS5ybp5qPiV8OvCsWL6_FXxyiHJjVodoyyfuaRPniY7QsxC_D-v3xEIj_0JDryA7Uk4AYGJr194BbRARt29JUxxbEIjil-nq29b1OEQpNnvq3oXn7GAxTFbKh14KKkzLzTKVD-9-xjbdIOR72FQ=w603-h490-no" alt="cqciNhjVtP3bpO XeVRiji VB32p7kV COMLVRI9qP lNJ xJBg91bO0uaQWDGJOrjUg1TbimNG2KIZu89Ap3rlg4VMG5MOQl36jgWCl1I4YVA6KlCkGPeeThXYgMFjmer2dfh C K4mHUIwsEoK6dvBVOYWObj6PHn1p51ezOHdw1u 5hRkR4Ogt6IjiH9uA3SO6KK6U rsEGeESjq6Fdz7 Maieg2nQLR1MSCC 5LvswGRvZcoCS7E Z31EMxpCl1tiIn56mKYAeN7qESZUygaDtfiUGBKXq8ABF MR4U2Fz5lAhzVoSIaxxGmm fc5Lg7tKdCVo2n5IU vl0Q932BC2MikUQbhPbwLiD9T6g93Rz2NemzpWmWklJfWNGxPZuHestb5X1T0UiaaaR4hNKulfXPz4EIQNAKbAEfBD9S5 GPmKPhtmJUKC2I1zqb9JiX5DcoToc1Htn4SLHovmz8zZGNoMZYXBrA2bwzp0WF7nAS0eGjcMglQL1T tATQz 6rxS5ybp5qPiV8OvCsWL6 FXxyiHJjVodoyyfuaRPniY7QsxC D v3xEIj 0JDryA7Uk4AYGJr194BbRARt29JUxxbEIjil nq29b1OEQpNnvq3oXn7GAxTFbKh14KKkzLzTKVD 9 xjbdIOR72FQ=w603 h490 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>還可以將下拉選單 (select) 換成單選 (radio) 或是多選 (checkbox)，真的是一個非常方便且實用的外掛。除非有特殊需求，不然 Search &amp; Filter 的基本功能就已經非常強大了。</p>



<p>測試的方式可以直接把 shortcode 放進文章裡，或者也可以從外觀 -&gt; 小工具 -&gt;  自訂 HTML</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/lqA6Vdi5abUmo3nCha48nxbrxopHfIs5Oyp63v01KueBWyCEWgY-rF-X7uerX7TvuOOtqlNbGIqHnVWJlrPpLa9Xaj1gchs1M9uC1Dx1sny0ULjKK6tVA2dEH5kk0iVCuJflPoQ2bRyHq786RY_SgD5y9hsDOXdPiGABv6z1p-FozTRuucQw6tUYNBeQ9f5_Zrzmoowxx5iceNzsb29iz9dYNsYd6Y6Z4oLvjx4IOtoTOIeKkpMXOYzYh5eQ0YYigbG03o_hyKhrv3vAqarBCmR50a7EUjVnU2S9jhGIj8jzH12ouk_fXn3xejEkWd1bD8qqA4gKxTGlmLO4f3oJxKH8Gmh9jufPPk9Hwxe4aNIFIVss66ppbPJkV7n2AMqhi8qvcdvoW2PfYGLbo3vYXxiIUYmJvCpP04y6GA2HDG5HUwd0SK35NR-2KDoZo7krQEQ_9CSPoPPsOwGtQoFlC8v2jFRyDpwvcEbSkSXaVXkHpH5PTThkgSFEcajAOp5JCopyTq84CSYC-ov0fkItVuQWwS_pJhaTBjRP_OfNEA-SOjMMyF2Zmwrr5yZdzBB_74W6i21nKxW7zmDGPJaj_2cvjEl_qIHob5rw_euUtQM1fuvRJMzTNNeeNUcvBNhn6ZF8u0oi8_8ZLpTp0ITWn53x6Q=w320-h241-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/lqA6Vdi5abUmo3nCha48nxbrxopHfIs5Oyp63v01KueBWyCEWgY-rF-X7uerX7TvuOOtqlNbGIqHnVWJlrPpLa9Xaj1gchs1M9uC1Dx1sny0ULjKK6tVA2dEH5kk0iVCuJflPoQ2bRyHq786RY_SgD5y9hsDOXdPiGABv6z1p-FozTRuucQw6tUYNBeQ9f5_Zrzmoowxx5iceNzsb29iz9dYNsYd6Y6Z4oLvjx4IOtoTOIeKkpMXOYzYh5eQ0YYigbG03o_hyKhrv3vAqarBCmR50a7EUjVnU2S9jhGIj8jzH12ouk_fXn3xejEkWd1bD8qqA4gKxTGlmLO4f3oJxKH8Gmh9jufPPk9Hwxe4aNIFIVss66ppbPJkV7n2AMqhi8qvcdvoW2PfYGLbo3vYXxiIUYmJvCpP04y6GA2HDG5HUwd0SK35NR-2KDoZo7krQEQ_9CSPoPPsOwGtQoFlC8v2jFRyDpwvcEbSkSXaVXkHpH5PTThkgSFEcajAOp5JCopyTq84CSYC-ov0fkItVuQWwS_pJhaTBjRP_OfNEA-SOjMMyF2Zmwrr5yZdzBB_74W6i21nKxW7zmDGPJaj_2cvjEl_qIHob5rw_euUtQM1fuvRJMzTNNeeNUcvBNhn6ZF8u0oi8_8ZLpTp0ITWn53x6Q=w320-h241-no" alt="lqA6Vdi5abUmo3nCha48nxbrxopHfIs5Oyp63v01KueBWyCEWgY rF X7uerX7TvuOOtqlNbGIqHnVWJlrPpLa9Xaj1gchs1M9uC1Dx1sny0ULjKK6tVA2dEH5kk0iVCuJflPoQ2bRyHq786RY SgD5y9hsDOXdPiGABv6z1p FozTRuucQw6tUYNBeQ9f5 Zrzmoowxx5iceNzsb29iz9dYNsYd6Y6Z4oLvjx4IOtoTOIeKkpMXOYzYh5eQ0YYigbG03o hyKhrv3vAqarBCmR50a7EUjVnU2S9jhGIj8jzH12ouk fXn3xejEkWd1bD8qqA4gKxTGlmLO4f3oJxKH8Gmh9jufPPk9Hwxe4aNIFIVss66ppbPJkV7n2AMqhi8qvcdvoW2PfYGLbo3vYXxiIUYmJvCpP04y6GA2HDG5HUwd0SK35NR 2KDoZo7krQEQ 9CSPoPPsOwGtQoFlC8v2jFRyDpwvcEbSkSXaVXkHpH5PTThkgSFEcajAOp5JCopyTq84CSYC ov0fkItVuQWwS pJhaTBjRP OfNEA SOjMMyF2Zmwrr5yZdzBB 74W6i21nKxW7zmDGPJaj 2cvjEl qIHob5rw euUtQM1fuvRJMzTNNeeNUcvBNhn6ZF8u0oi8 8ZLpTp0ITWn53x6Q=w320 h241 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/pMQyAOOx5-nswzJZVA8Avus45Koy0pfDEiURB0v6qHCgbjfCkKzQU5FliNG494RVsizdQmatzd6GOAG1LNUHJXQlZ7ZSS93paaYxJw0ZY69xVgvGrMAYM3jmHaRoES3kS-Upo6BL738GvKhNPsL1626RySnU2hjjcfAucYRm0OIY7fg89QUxVpOnFcIgUcl69lcZzsv2fZdzR71xa6CBHBvrTgXI3e5NW-pTRTBX6UBRpp-NwXgy8dpe34WHTdXsqOSuQacJi6E9UjRxAwVOzsHTdODb-2lzkFtMRIt8s-RPnNFHDOsun6m4ypQqF58IS9OQgP6uHoqlt5Qv0YuzCAb_ID6JMa0ivJ5kBPjIh--gIb8mc2KGJrGTua0Rb6ypvw-ZYGPuoaj-KgTAZrKoMCo4KTPfClFFzfS6uaFQ62A4_TnlhGRbZcxpy6qrKo8eF0gTEAdet5dIy2dFsHH-cs6wIzPo8z_tTFIlgqVCWqCQge6Sh5vHMVACNMmx9FQ8cTJa4Kn2BmQqHbjWo-Is9MbjlG-RKY7nn8ohYgH3H4rG116FRjXEmH4UuPbRLpTtPXI5mzgHiy-C2eFCZsgJNulzTK2xdwJUAC5YZaZR45KbEEBIlA2MHOAhcBUWQpiigd6mvocaGC7Eq_4hB8nF1zmkgQ=w438-h517-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/pMQyAOOx5-nswzJZVA8Avus45Koy0pfDEiURB0v6qHCgbjfCkKzQU5FliNG494RVsizdQmatzd6GOAG1LNUHJXQlZ7ZSS93paaYxJw0ZY69xVgvGrMAYM3jmHaRoES3kS-Upo6BL738GvKhNPsL1626RySnU2hjjcfAucYRm0OIY7fg89QUxVpOnFcIgUcl69lcZzsv2fZdzR71xa6CBHBvrTgXI3e5NW-pTRTBX6UBRpp-NwXgy8dpe34WHTdXsqOSuQacJi6E9UjRxAwVOzsHTdODb-2lzkFtMRIt8s-RPnNFHDOsun6m4ypQqF58IS9OQgP6uHoqlt5Qv0YuzCAb_ID6JMa0ivJ5kBPjIh--gIb8mc2KGJrGTua0Rb6ypvw-ZYGPuoaj-KgTAZrKoMCo4KTPfClFFzfS6uaFQ62A4_TnlhGRbZcxpy6qrKo8eF0gTEAdet5dIy2dFsHH-cs6wIzPo8z_tTFIlgqVCWqCQge6Sh5vHMVACNMmx9FQ8cTJa4Kn2BmQqHbjWo-Is9MbjlG-RKY7nn8ohYgH3H4rG116FRjXEmH4UuPbRLpTtPXI5mzgHiy-C2eFCZsgJNulzTK2xdwJUAC5YZaZR45KbEEBIlA2MHOAhcBUWQpiigd6mvocaGC7Eq_4hB8nF1zmkgQ=w438-h517-no" alt="pMQyAOOx5 nswzJZVA8Avus45Koy0pfDEiURB0v6qHCgbjfCkKzQU5FliNG494RVsizdQmatzd6GOAG1LNUHJXQlZ7ZSS93paaYxJw0ZY69xVgvGrMAYM3jmHaRoES3kS Upo6BL738GvKhNPsL1626RySnU2hjjcfAucYRm0OIY7fg89QUxVpOnFcIgUcl69lcZzsv2fZdzR71xa6CBHBvrTgXI3e5NW pTRTBX6UBRpp NwXgy8dpe34WHTdXsqOSuQacJi6E9UjRxAwVOzsHTdODb 2lzkFtMRIt8s RPnNFHDOsun6m4ypQqF58IS9OQgP6uHoqlt5Qv0YuzCAb ID6JMa0ivJ5kBPjIh gIb8mc2KGJrGTua0Rb6ypvw ZYGPuoaj KgTAZrKoMCo4KTPfClFFzfS6uaFQ62A4 TnlhGRbZcxpy6qrKo8eF0gTEAdet5dIy2dFsHH cs6wIzPo8z tTFIlgqVCWqCQge6Sh5vHMVACNMmx9FQ8cTJa4Kn2BmQqHbjWo Is9MbjlG RKY7nn8ohYgH3H4rG116FRjXEmH4UuPbRLpTtPXI5mzgHiy C2eFCZsgJNulzTK2xdwJUAC5YZaZR45KbEEBIlA2MHOAhcBUWQpiigd6mvocaGC7Eq 4hB8nF1zmkgQ=w438 h517 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">[searchandfilter fields="search,category,place"  types=",select,checkbox" headings=",分類,地區" operators=",,or" show_count=",1,1"]</pre>



<p>小蛙需要搜尋框、分類(顯示縣市的)以及 place taxonomy(顯示地區的)，分別是用輸入框、下拉選單、跟多選框來呈現，並切加入分類、地區等標籤，重點是後面這個 operators，這個讓你可以選擇要用 and 或是 or 運算，這個的差別在於如果小蛙選擇了「臺北市」，而地區部份為多選，當使用 and 的情況下，選了「信義」跟「南港」就必須有一個地點同時是信義也同時是南港，才會被搜尋出來，這樣子就不太符合小蛙需求，因為不會有一個地方同時在南港，又同時在信義，這時候就必須多一個 operators 來設定成 or，如此一來輸出條件就變成，符合臺北市信義區或是臺北市南港區的景點，這樣才符合小蛙的需求。而 show_count 就是要不要顯示文章數量，1 是顯示 0 是不顯示。</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/n8MvUQzggcuLc6bzXGS0HozBkNr_Hkx6IuZkBuLO8w0cjmRvPpijPphn3DVwYz9uqCD_UQLS_SLa2uETtR3L8rWwam2cfmsqiKyfwm5bcVwUeOvK3uXauiczyuRS-mZLl3mqDUCPZ3C1kv2gdOxi2ZJLLIzO9ej1udvIN3UzWS_LaUBykPLuwWV4TsSb3YnKtEnnl_LkvGXwG_C5_dawPYeQqhNMmsL2YK1kpKzDpZk4iQb5PDda3WlhzJl8bOCib6P_Ky7lE_-X5wgX88K5tLwNNwIAqoDo6GxGWi6-W2kbz2UHNjPvzzB5nPJSFuD9xTD3epLlz5YeXQeHOqaHaVyIdmmo8tGiwvzQJl-xttkw_Ox5jB4sJpYzrWDSxs4KGcBSWjAyPzg3ATg2z5lvwkw49WXu5lFARzbJWBbXdt6w2X28JY4cIpHSJr7gD9uKUVf_dEPumFYGs4GJP2fN-ust_8oMwkVZ1LISnddtf8m067H1btpx_1I3hsdncLa1Vistawum1huVmGI48K75hxNql1sYjr-9ffR2v7ox73cVFIBY-goVn_rYZSO23JXJ8W40dtMo0ZIRl32SuRpMkSrWU0WYXsVdzcubBQaiccRA8nquT_95FwbPIY90nVNZS4JAKbJ3E7EtSpSZdITTAkLS3Q=w354-h480-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/n8MvUQzggcuLc6bzXGS0HozBkNr_Hkx6IuZkBuLO8w0cjmRvPpijPphn3DVwYz9uqCD_UQLS_SLa2uETtR3L8rWwam2cfmsqiKyfwm5bcVwUeOvK3uXauiczyuRS-mZLl3mqDUCPZ3C1kv2gdOxi2ZJLLIzO9ej1udvIN3UzWS_LaUBykPLuwWV4TsSb3YnKtEnnl_LkvGXwG_C5_dawPYeQqhNMmsL2YK1kpKzDpZk4iQb5PDda3WlhzJl8bOCib6P_Ky7lE_-X5wgX88K5tLwNNwIAqoDo6GxGWi6-W2kbz2UHNjPvzzB5nPJSFuD9xTD3epLlz5YeXQeHOqaHaVyIdmmo8tGiwvzQJl-xttkw_Ox5jB4sJpYzrWDSxs4KGcBSWjAyPzg3ATg2z5lvwkw49WXu5lFARzbJWBbXdt6w2X28JY4cIpHSJr7gD9uKUVf_dEPumFYGs4GJP2fN-ust_8oMwkVZ1LISnddtf8m067H1btpx_1I3hsdncLa1Vistawum1huVmGI48K75hxNql1sYjr-9ffR2v7ox73cVFIBY-goVn_rYZSO23JXJ8W40dtMo0ZIRl32SuRpMkSrWU0WYXsVdzcubBQaiccRA8nquT_95FwbPIY90nVNZS4JAKbJ3E7EtSpSZdITTAkLS3Q=w354-h480-no" alt="n8MvUQzggcuLc6bzXGS0HozBkNr Hkx6IuZkBuLO8w0cjmRvPpijPphn3DVwYz9uqCD UQLS SLa2uETtR3L8rWwam2cfmsqiKyfwm5bcVwUeOvK3uXauiczyuRS mZLl3mqDUCPZ3C1kv2gdOxi2ZJLLIzO9ej1udvIN3UzWS LaUBykPLuwWV4TsSb3YnKtEnnl LkvGXwG C5 dawPYeQqhNMmsL2YK1kpKzDpZk4iQb5PDda3WlhzJl8bOCib6P Ky7lE X5wgX88K5tLwNNwIAqoDo6GxGWi6 W2kbz2UHNjPvzzB5nPJSFuD9xTD3epLlz5YeXQeHOqaHaVyIdmmo8tGiwvzQJl xttkw Ox5jB4sJpYzrWDSxs4KGcBSWjAyPzg3ATg2z5lvwkw49WXu5lFARzbJWBbXdt6w2X28JY4cIpHSJr7gD9uKUVf dEPumFYGs4GJP2fN ust 8oMwkVZ1LISnddtf8m067H1btpx 1I3hsdncLa1Vistawum1huVmGI48K75hxNql1sYjr 9ffR2v7ox73cVFIBY goVn rYZSO23JXJ8W40dtMo0ZIRl32SuRpMkSrWU0WYXsVdzcubBQaiccRA8nquT 95FwbPIY90nVNZS4JAKbJ3E7EtSpSZdITTAkLS3Q=w354 h480 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<p>基本上到這邊應該都能正常運作了，不過小蛙收到的需求是希望可以把多選框改成類似標籤 (tag) 的方式呈現。在剛剛的自訂 HTML 小工具中修改一下內容，看看成果，Search &amp; Filter + Toolset Types 真的是非常方便！</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://lh3.googleusercontent.com/hEwjZHIuWaVUol4scWxs2lWlnm7C1dVPoS0G2FeGzUUyPBJkZawhYTpdHSv6ijdRiC0KFaHs6UIxn2W_0hN28_L95CKCX0h2xEnrnWwyzMvqG6NurnE1iHhmju4fy1oFwywWEWJExaVRqXRbaJB5W_PN0D7g-lrvHD-_D0URxcjywx7sCfGBZkdfyWQnZP9RhJj_X8ZOhU2pkDVMkQJfynmGwhclV1398_yCjR6q9aTkdKleAGh_U82AQBpNn0bHlhw7jqV5H8oq_rRVfi7xAFHg__eztGX7f0hJKLsMqpMNZyMyFge4fe23aVNeIN4FY0Kt0KTn2sKNGqVflyHcxPZL3IPnD9_DHQARZio2LquKq8zEgKNIRu8T8IzvUvLClVyqHTM7sI2z7OTgVtXwdWA01OVJd3RpPCOYrupk8NwAAa3kiR88pAW-4w5Hsqqf7PdTzv3YvHupKYlDzjFBtDSkx7Bs_EcsS3ja2SubZ6shnExYVNbw9zMkOTRwf0-Br3DlLD0SccaLknLlF6G8R7Bnw2LJmO1CuHDJJ7gkhb7RNaVz4rrG3fbcsm22wJF2tXMrW4y3qk8nXjMkDZRseqynRS-yhu68eFUL_hae_HNiV79396DJb1mxmuT_SfIwoqHa0qTe2WdcWb0pEyO0-t98OQ=w352-h382-no" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" src="https://lh3.googleusercontent.com/hEwjZHIuWaVUol4scWxs2lWlnm7C1dVPoS0G2FeGzUUyPBJkZawhYTpdHSv6ijdRiC0KFaHs6UIxn2W_0hN28_L95CKCX0h2xEnrnWwyzMvqG6NurnE1iHhmju4fy1oFwywWEWJExaVRqXRbaJB5W_PN0D7g-lrvHD-_D0URxcjywx7sCfGBZkdfyWQnZP9RhJj_X8ZOhU2pkDVMkQJfynmGwhclV1398_yCjR6q9aTkdKleAGh_U82AQBpNn0bHlhw7jqV5H8oq_rRVfi7xAFHg__eztGX7f0hJKLsMqpMNZyMyFge4fe23aVNeIN4FY0Kt0KTn2sKNGqVflyHcxPZL3IPnD9_DHQARZio2LquKq8zEgKNIRu8T8IzvUvLClVyqHTM7sI2z7OTgVtXwdWA01OVJd3RpPCOYrupk8NwAAa3kiR88pAW-4w5Hsqqf7PdTzv3YvHupKYlDzjFBtDSkx7Bs_EcsS3ja2SubZ6shnExYVNbw9zMkOTRwf0-Br3DlLD0SccaLknLlF6G8R7Bnw2LJmO1CuHDJJ7gkhb7RNaVz4rrG3fbcsm22wJF2tXMrW4y3qk8nXjMkDZRseqynRS-yhu68eFUL_hae_HNiV79396DJb1mxmuT_SfIwoqHa0qTe2WdcWb0pEyO0-t98OQ=w352-h382-no" alt="hEwjZHIuWaVUol4scWxs2lWlnm7C1dVPoS0G2FeGzUUyPBJkZawhYTpdHSv6ijdRiC0KFaHs6UIxn2W 0hN28 L95CKCX0h2xEnrnWwyzMvqG6NurnE1iHhmju4fy1oFwywWEWJExaVRqXRbaJB5W PN0D7g lrvHD D0URxcjywx7sCfGBZkdfyWQnZP9RhJj X8ZOhU2pkDVMkQJfynmGwhclV1398 yCjR6q9aTkdKleAGh U82AQBpNn0bHlhw7jqV5H8oq rRVfi7xAFHg eztGX7f0hJKLsMqpMNZyMyFge4fe23aVNeIN4FY0Kt0KTn2sKNGqVflyHcxPZL3IPnD9 DHQARZio2LquKq8zEgKNIRu8T8IzvUvLClVyqHTM7sI2z7OTgVtXwdWA01OVJd3RpPCOYrupk8NwAAa3kiR88pAW 4w5Hsqqf7PdTzv3YvHupKYlDzjFBtDSkx7Bs EcsS3ja2SubZ6shnExYVNbw9zMkOTRwf0 Br3DlLD0SccaLknLlF6G8R7Bnw2LJmO1CuHDJJ7gkhb7RNaVz4rrG3fbcsm22wJF2tXMrW4y3qk8nXjMkDZRseqynRS yhu68eFUL hae HNiV79396DJb1mxmuT SfIwoqHa0qTe2WdcWb0pEyO0 t98OQ=w352 h382 no 強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types" title="強化 WordPress 搜尋功能 - Search &amp; Filter + Toolset Types"></a></figure></div>



<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/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 搜尋功能 &#8211; Search &#038; Filter + Toolset Types</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>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/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>方便的佔位圖片產生器 &#8211; Placemat、Placehold.jp、Lorem Picsum</title>
		<link>https://noter.tw/134/%e6%96%b9%e4%be%bf%e7%9a%84%e4%bd%94%e4%bd%8d%e5%9c%96%e7%89%87%e7%94%a2%e7%94%9f%e5%99%a8-placemat%e3%80%81placehold-jp%e3%80%81lorem-picsum/</link>
					<comments>https://noter.tw/134/%e6%96%b9%e4%be%bf%e7%9a%84%e4%bd%94%e4%bd%8d%e5%9c%96%e7%89%87%e7%94%a2%e7%94%9f%e5%99%a8-placemat%e3%80%81placehold-jp%e3%80%81lorem-picsum/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Fri, 23 Nov 2018 05:44:24 +0000</pubDate>
				<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[技術相關]]></category>
		<category><![CDATA[佔位]]></category>
		<category><![CDATA[圖片]]></category>
		<category><![CDATA[img]]></category>
		<category><![CDATA[隨機]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=134</guid>

					<description><![CDATA[<p>佔位圖片就是當我們在設計版面的時候，規劃出一個區塊要來放置內容，但此時裡面並沒有真正的圖片或內容，這時候佔位器就可以幫上忙，在溝通上可以更容易看出這裡有一塊版面，也不用開小畫家自己放圖進去，大部份使用&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/134/%e6%96%b9%e4%be%bf%e7%9a%84%e4%bd%94%e4%bd%8d%e5%9c%96%e7%89%87%e7%94%a2%e7%94%9f%e5%99%a8-placemat%e3%80%81placehold-jp%e3%80%81lorem-picsum/" data-wpel-link="internal">方便的佔位圖片產生器 &#8211; Placemat、Placehold.jp、Lorem Picsum</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>佔位圖片就是當我們在設計版面的時候，規劃出一個區塊要來放置內容，但此時裡面並沒有真正的圖片或內容，這時候佔位器就可以幫上忙，在溝通上可以更容易看出這裡有一塊版面，也不用開小畫家自己放圖進去，大部份使用上只要在<code>img</code>標籤的<code>src</code>指定該位址即可。 </p>



<span id="more-134"></span>



<h2 class="para wp-block-heading">Placemat</h2>



<p>網址連結：https://placem.at/ (連結已失效)</p>



<p>Placemat 主要提供三個類別的圖片，分別是</p>



<pre class="wp-block-preformatted">以人物為主體的圖片：https://placem.at/people
以風景為主體的圖片：https://placem.at/places
以東西為主體的圖片：https://placem.at/things</pre>



<p>讓使用者可以依自己需求取得不同類型的圖片，除了這三類圖片外，還有其他的參數設定，這邊列幾個小蛙有用到的：</p>



<ul class="my-li bg-darkblue wp-block-list"><li><code>w</code> -&gt; 寬度<br>https://placem.at/people?w=300<br>取得以人為主體，並且寬度為 300px 的照片<br></li><li><code>h</code> -&gt; 高度<br>https://placem.at/places?h=300<br>取得以人為主體，並且高度為 300px 的照片<br></li><li><code>random</code> -&gt; 隨機<br>https://placem.at/people?w=300&amp;h=300&amp;random=hello<br>隨機取得以人為主體，並且寬度為 300px 高度 300px 的照片，預設如果有給寬或高的參數，只會回傳一模一樣的，所以必須靠<code>random</code>來控制隨機<br></li><li><code>txt</code> -&gt; 產生的圖片上放置文字<br>https://placem.at/people?w=400&amp;txt=嗨<br>取得以人為主體 300 x 300 的圖片，並在圖片上印出「嗨」的字樣<br></li><li><code>txtclr</code> -&gt; 文字顏色<br>https://placem.at/people?txtclr=fff&amp;w=300&amp;h=300<br>隨機取得以人為主體，大小為 300 x 300 的圖片，並設定顏色為白色(fff)，預設值為<code>BFFF</code>，可接受RGB(三個數值)、ARGB(四個數值)或是AARRGGBB(八個數值)，小蛙在這邊不希望出現 300 x 300 的字樣，因此只要 A 的部份設定成 0 就可以產生沒有文字的圖片，例如：ffff。<br></li><li><code>overlay_color</code> -&gt; 遮罩顏色<br>https://placem.at/people?overlay_color=ffffffff<br>隨機取得以人為主體，並設定遮罩顏色為透明(ffffffff)，預設值為<code>ACACAC</code>，可接受RGB(三個數值)、RRGGBB(六個數值)或是AARRGGBB(八個數值)，小蛙一開始覺得怎麼圖片顏色暗暗的，改成<code>ffffffff</code>就可以取得比較亮的圖片了。</li></ul>



<p>更詳細的說明就請連到 Placemat 官網去看囉！</p>



<h2 class="para wp-block-heading">Placehold.jp</h2>



<p>網址連結：<a href="http://placehold.jp/en.html" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">http://placehold.jp/en.html<span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="http://placehold.jp/300x300.png" alt="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>


<p>Placehold.jp 產生的佔位圖是我們最常見的單純色塊 + 區塊大小的文字，(大家看起來是圓角，但那是 CSS 處理過的，原始的是直角喔)</p>



<p>Placehold.jp 的使用方式也非常簡單，除了可以自己設定大小之外，網站也提供了常用的大小區塊直接選擇，如同 Placemat 一樣也可以接受直接透過參數的方式來產生佔位圖，參數設定如下：</p>



<pre class="wp-block-preformatted">http://placehold.jp/{字體顏色}/{寬度}x{高度}.png
http://placehold.jp/{背景顏色}/{字體顏色}/{寬度}x{高度}.png
http://placehold.jp/{字體大小}/{背景顏色}/{字體顏色}/{寬度}x{高度}.png</pre>



<p>如果有其他的需求，依照上面的取圖方式填入對應的數值，例如：</p>



<ol class="wp-block-list"><li>產生綠色文字，且大小為 200 x 200 的圖片<br>http://placehold.jp/00ff00/200&#215;200.png<br></li><li>產生綠色文字、紅色背景，且大小為 200 x 200 的圖片<br>http://placehold.jp/00ff00/200&#215;200.png<br></li><li>產生綠色文字、紅色背景，且大小為 200 x 200 的圖片<br>http://placehold.jp/60/ff0000/00ff00/200&#215;200.png</li></ol>



<p>Placehold.jp 也支援 jpg 及 png 格式的輸出</p>



<pre class="wp-block-preformatted">http://placehold.jp/200x200.png
http://placehold.jp/200x200.jpg</pre>



<p>可以加入自己想要的文字</p>



<pre class="wp-block-preformatted">http://placehold.jp/30/999999/ff0000/200x100.png?text=專業偽筆記</pre>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="http://placehold.jp/30/999999/ff0000/200x100.png?text=%E5%B0%88%E6%A5%AD%E5%81%BD%E7%AD%86%E8%A8%98" alt="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>


<p>最後，還有最後一個功能還蠻有趣的，Placehold.jp 可以透過 css 來做到圓角</p>



<pre class="wp-block-preformatted">http://placehold.jp/300x300.png?css={"border-radius":"15px"}</pre>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="http://placehold.jp/300x300.png?css={%22border-radius%22:%2215px%22}" alt="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>


<h2 class="para wp-block-heading">Lorem Picsum</h2>



<p>網址連結：<a href="https://picsum.photos/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">https://picsum.photos/<span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>



<pre class="wp-block-preformatted">基本使用
https://picsum.photos/{寬度}/{高度}
https://picsum.photos/{大小}</pre>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://picsum.photos/300/200" alt="200 方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>

<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://picsum.photos/300" alt="300 方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>


<p>產生 300 x 200 的圖片<br>https://picsum.photos/300/200<br><br>產生 300 x 300 的方形圖片<br>https://picsum.photos/300</p>



<pre class="wp-block-preformatted">隨機產生圖片
https://picsum.photos/200/300/?random</pre>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://picsum.photos/200/300/?random" alt="?random 方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>


<pre class="wp-block-preformatted">灰階圖片
https://picsum.photos/g/200/300</pre>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" src="https://picsum.photos/g/200/300" alt="300 方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum"></figure></div>


<pre class="wp-block-preformatted">批次產生圖片以 json 回傳
https://picsum.photos/list</pre>


<div class="wp-block-image">
<figure class="aligncenter"><img decoding="async" width="547" height="267" src="https://noter.tw/wp-content/uploads/picsum.photos.png" alt="picsum.photos 方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" class="wp-image-173" title="方便的佔位圖片產生器 - Placemat、Placehold.jp、Lorem Picsum" srcset="https://noter.tw/wp-content/uploads/picsum.photos.png 547w, https://noter.tw/wp-content/uploads/picsum.photos-300x146.png 300w" sizes="(max-width: 547px) 100vw, 547px" /></figure></div>


<p>還有其他更多詳細用法可以直接到<a href="https://picsum.photos/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external" class="wpel-icon-right">Lorem Picsum<span class="wpel-icon wpel-image wpel-icon-6"></span></a>看看喔！</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/134/%e6%96%b9%e4%be%bf%e7%9a%84%e4%bd%94%e4%bd%8d%e5%9c%96%e7%89%87%e7%94%a2%e7%94%9f%e5%99%a8-placemat%e3%80%81placehold-jp%e3%80%81lorem-picsum/" data-wpel-link="internal">方便的佔位圖片產生器 &#8211; Placemat、Placehold.jp、Lorem Picsum</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/134/%e6%96%b9%e4%be%bf%e7%9a%84%e4%bd%94%e4%bd%8d%e5%9c%96%e7%89%87%e7%94%a2%e7%94%9f%e5%99%a8-placemat%e3%80%81placehold-jp%e3%80%81lorem-picsum/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Android 2.3 @JavascriptInterface Issue</title>
		<link>https://noter.tw/3202/android-2-3-javascriptinterface-issue/</link>
					<comments>https://noter.tw/3202/android-2-3-javascriptinterface-issue/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Fri, 28 Mar 2014 12:25:25 +0000</pubDate>
				<category><![CDATA[手機 App]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[@JavascriptInterface]]></category>
		<category><![CDATA[addJavascriptInterface]]></category>
		<guid isPermaLink="false">http://wazai.net/?p=3202</guid>

					<description><![CDATA[<p>JavascriptInterface 這個問題相信 Google 一下就可以找到很多文章，雖然如此小蛙還是試了好久才成功，這篇文章記錄一下當時小蛙不成功的盲點在哪裡。上一篇文章「Android 與 &#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/3202/android-2-3-javascriptinterface-issue/" data-wpel-link="internal">Android 2.3 @JavascriptInterface Issue</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>JavascriptInterface 這個問題相信 Google 一下就可以找到很多文章，雖然如此小蛙還是試了好久才成功，這篇文章記錄一下當時小蛙不成功的盲點在哪裡。上一篇文章「<a href="https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">Android 與 WebView 中的 Javascript 相互溝通</a>」記錄怎麼讓 Android 與 Javascript 相互溝通。</p>



<span id="more-3202"></span>



<p>小蛙在實作 WebView 載入的網頁與 Android 互動時，一直都以手邊的 Nexus 7 2013 來做測試，直到所有功能都已就緒，有一天突然想起之前好像有看到 Javascript 在 2.3.x 會出現錯誤的問題，於是開了 2.3 版本的 emulator 來做測試，由於小蛙實作的部分是從 Javascript 呼叫某一個 function 來實作開啟行事曆的功能，這邊發生了大概類似下面的這種錯誤(小蛙的錯誤訊息已經洗掉了，以下內容來字<a href="http://twigstechtips.blogspot.tw/2013/09/android-webviewaddjavascriptinterface.html" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">參考資料1<span class="wpel-icon wpel-image wpel-icon-6"></span></a>)</p>



<pre class="wp-block-preformatted withcode">JNI WARNING: jarray 0xb5d256f0 points to non-array object (Ljava/lang/String;)
"WebViewCoreThread" prio=5 tid=8 NATIVE
  | group="main" sCount=0 dsCount=0 obj=0xb5cfc348 self=0x8234e98
  | sysTid=2023 nice=0 sched=0/0 cgrp=[fopen-error:2] handle=136531904
  at android.webkit.WebViewCore.nativeTouchUp(Native Method)
  at android.webkit.WebViewCore.nativeTouchUp(Native Method)
  at android.webkit.WebViewCore.access$3300(WebViewCore.java:53)
  at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1162)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:130)
  at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:633)
  at java.lang.Thread.run(Thread.java:1019)
VM aborting</pre>



<p>對於這個問題，<a href="http://twigstechtips.blogspot.tw/2013/09/android-webviewaddjavascriptinterface.html" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">參考資料1 <span class="wpel-icon wpel-image wpel-icon-6"></span></a>的作者將 JavascriptInterface 整理成一個比較完整的 solution，不過因為教學文章「漏漏長」，所以小蛙後來沒有採用這個方案，雖然方案不同，不過解決這個問題的邏輯是差不多的。</p>



<p>小蛙後來使用了<a href="http://fred-zone.blogspot.tw/2011/12/android-23x-javascript-interface.html" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">參考資料2<span class="wpel-icon wpel-image wpel-icon-6"></span></a>的方法來解決，這邊大概記錄一下作法 (不知道怎麼讓 Android 與 Javascript 互通的話可參考「<a href="https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/" target="_blank" rel="noreferrer noopener" data-wpel-link="internal">Android 與 WebView 中的 Javascript 相互溝通 @ 蛙齋</a>」)：</p>



<p><strong>檢查 Android 版本</strong></p>



<p>設定參數來記錄 Android 版本是否為 2.3.x</p>



<pre class="wp-block-preformatted withcode">private static JavaScriptInterface JSInterface;
// 設置 javascriptInterfaceBroken 來判斷是否為 2.3.x
private static boolean javascriptInterfaceBroken = false;
public static WebView wv;
try {
        if (Build.VERSION.RELEASE.contains("2.3.")) {
                javascriptInterfaceBroken = true;
        }
} catch (Exception e) { }
JSInterface = new JavaScriptInterface(getActivity());</pre>



<p><strong>依照版本設定對應動作</strong></p>



<pre class="wp-block-preformatted withcode">if(!javascriptInterfaceBroken){
    // 非 2.3.x 版本，正常執行
    wv.addJavascriptInterface(JSIterface, "JSInterface");
    ...
}else{
    // 2.3.x 版本
    wv.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url){
        super.onPageFinished(view, url);
        String handleGingerbreadStupidity =
                "javascript:function addToNotify(title, url, start, end) { window.location='http://JSInterface:addToNotify:'+(title)+'◎'+(url)+'◎'+(start)+'◎'+(end); }; "
                + "javascript: function handler() { this.addToNotify=addToNotify }; "
                + "javascript: var JSInterface = new handler();";
                view.loadUrl(handleGingerbreadStupidity);
        }
        @Override
        public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
            if (url.contains("JSInterface:addToNotify")) {
                // 在這邊可用 regular expression 把剛剛組出來的 url 解回
                                // 須注意如果有中文的話，字串要先從 ISO-8859-1 轉回 UTF-8
                String nUrl = new String(url.getBytes("ISO-8859-1"), "UTF-8");
                String title = "title";
                String desc = "desc";
                String start = "start";
                String end = "end";
                try {
                    Method sMethod = JSInterface.getClass().getMethod("addToNotify", new Class[] { String.class, String.class, String.class, String.class });
                    sMethod.invoke(JSInterface, title, desc, start, end);
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
            }
            return true;
        }
    });
}</pre>



<p>上述程式碼中有幾個部份小蛙提出來記錄：</p>



<p>handleGingerbreadStupidity 字串中的 addToNotify 改成自己的方法名稱；JSInterface 改成自己的 JavaScriptInterface 名稱；後面參數有幾個都用「:」連接，因為小蛙的參數中有冒號會跟原本的冒號混淆，導致要拆出字串的時候很麻煩，因此這邊改成用「◎」來區隔。</p>



<p>shouldOverrideUrlLoading 會接收到從 onPageFinished 過來的 url，接著判斷如果包含剛剛我們自己組合的字串的話，就使用 reflection 的方式來呼叫對應方法。JSInterface.getClass().getMethod 中的 JSInterface 是開頭宣告的 JavaScriptInterface 的物件名稱，getMethod 第一個參數為呼叫的方法名稱，第二個參數是傳入的參數型別，都設定好之後就用 sMethod.invoke 呼叫該方法並傳入需要的物件及參數。</p>



<p>記錄的有點亂，小蛙當時卡在 onPagefinished 中傳參數的部分，因為內容包含了冒號導致發生一些問題；再來是 getMethod 方法不太會用，卡了一段時間 &#8230;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/3202/android-2-3-javascriptinterface-issue/" data-wpel-link="internal">Android 2.3 @JavascriptInterface Issue</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/3202/android-2-3-javascriptinterface-issue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Android 與 WebView 中的 Javascript 相互溝通</title>
		<link>https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/</link>
					<comments>https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Fri, 28 Mar 2014 12:25:19 +0000</pubDate>
				<category><![CDATA[手機 App]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[Uncaught TypeError: Object [object Object] has no method]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[@JavascriptInterface]]></category>
		<category><![CDATA[addJavascriptInterface]]></category>
		<guid isPermaLink="false">http://wazai.net/?p=3204</guid>

					<description><![CDATA[<p>最近的一個 app 需要讓 Android 可以呼叫 WebView 中的 Javascript，並且按下 WebView 中的按鈕時，也可以呼叫 Android 內部的方法，這篇文章記錄一下大概的做&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/" data-wpel-link="internal">Android 與 WebView 中的 Javascript 相互溝通</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>最近的一個 app 需要讓 Android 可以呼叫 WebView 中的 Javascript，並且按下 WebView 中的按鈕時，也可以呼叫 Android 內部的方法，這篇文章記錄一下大概的做法，免得下次遇到又忘記 &#8230;<br />
<span id="more-3204"></span><br />
這個 app 需要做到的功能很簡單，在 Android 端希望可以點選「字體放大」、「字體縮小」的按鈕來呼叫 WebView 中的 Javascript；並且點選 WebView 中的行事曆按鈕後，可以開啟 Android 內建的 Google 行事曆。</p>
<ul>
<li>
<h5>Android 呼叫 WebView 中的 Javascript</h5>
</li>
</ul>
<p>透過 Android 本身的按鈕來達到呼叫 Javascript 的功能很簡單，以小蛙的例子是用 fragment 中放置一個 WebView</p>
<div>
<div id="highlighter_456521" class="syntaxhighlighter  java">
<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>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="java comments">// 取得 WebView 物件</code></div>
<div class="line number2 index1 alt1"><code class="java plain">WebView wv = (WebView) v.findViewById(R.id.webView1);</code></div>
<div class="line number3 index2 alt2"><code class="java comments">// 設定此 WebView 支援 Javascript</code></div>
<div class="line number4 index3 alt1"><code class="java plain">wv.getSettings().setJavaScriptEnabled(</code><code class="java keyword">true</code><code class="java plain">);</code></div>
<div class="line number5 index4 alt2"><code class="java comments">// 取得按鈕物件</code></div>
<div class="line number6 index5 alt1"><code class="java plain">Button b = (Button) v.findViewById(R.id.button1);</code></div>
<div class="line number7 index6 alt2"><code class="java plain">b.setOnClickListener(</code><code class="java keyword">new</code> <code class="java plain">View.OnClickListener() {</code></div>
<div class="line number8 index7 alt1"><code class="java spaces">    </code><code class="java color1">@Override</code></div>
<div class="line number9 index8 alt2"><code class="java spaces">    </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">onClick(View v) {</code></div>
<div class="line number10 index9 alt1"><code class="java spaces">                </code><code class="java plain">wv.loadUrl(</code><code class="java string">"javascript:fontSize('+')"</code><code class="java plain">);</code></div>
<div class="line number11 index10 alt2"><code class="java spaces">    </code><code class="java plain">}</code></div>
<div class="line number12 index11 alt1"><code class="java plain">});</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>上面的程式碼只寫出個大概，取得 WebView 後設定支援 Javascript，並且設定按鈕來執行 Javascript，上面例子小蛙 WebView 中有一個字體放大的 Javascript 叫做 fontSize(&#8216;+&#8217;)，因此直接使用 wv.loadUrl(&#8216;要呼叫的 Javascript&#8217;); 即可！</p>
<ul>
<li>
<h5>從 WebView 呼叫 Android Function</h5>
</li>
</ul>
<p>這個部分就比較複雜一些些，首先必須先建立一個 JavascriptInterface 物件，設定好要執行的相對應功能。例如：</p>
<div>
<div id="highlighter_626920" class="syntaxhighlighter  java">
<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="java keyword">public</code> <code class="java keyword">class</code> <code class="java plain">JavaScriptInterface {</code></div>
<div class="line number2 index1 alt1"><code class="java spaces">       </code><code class="java keyword">private</code> <code class="java plain">Activity activity;</code></div>
<div class="line number3 index2 alt2"><code class="java spaces">       </code><code class="java keyword">public</code> <code class="java plain">JavaScriptInterface(Activity activiy) {</code></div>
<div class="line number4 index3 alt1"><code class="java spaces">               </code><code class="java keyword">this</code><code class="java plain">.activity = activiy;</code></div>
<div class="line number5 index4 alt2"><code class="java spaces">       </code><code class="java plain">}</code></div>
<div class="line number6 index5 alt1"><code class="java spaces">       </code><code class="java color1">@JavascriptInterface</code></div>
<div class="line number7 index6 alt2"><code class="java spaces">       </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">showToast(){</code></div>
<div class="line number8 index7 alt1"><code class="java spaces">               </code><code class="java plain">Toast.makeText(activity, </code><code class="java string">"我被從WebView呼叫了"</code><code class="java plain">, Toast.LENGTH_SHORT).show();</code></div>
<div class="line number9 index8 alt2"><code class="java spaces">       </code><code class="java plain">}</code></div>
<div class="line number10 index9 alt1"><code class="java plain">}</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>這邊要注意的是如果 targetSdkVersion 設定為 17 以上，就必須在每個可以被 Javascript 呼叫的方法前面加上 @JavascriptInterface，否則會出現以下錯誤</p>
<div>
<div id="highlighter_751180" class="syntaxhighlighter  java">
<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="java plain">Uncaught TypeError: Object [object Object] has no method </code><code class="java string">'showToast'</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>將設定好的 JavaScriptInterface 設定給 WebView 物件</p>
<div>
<div id="highlighter_558003" class="syntaxhighlighter  java">
<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="java plain">wv.addJavascriptInterface(</code><code class="java keyword">new</code> <code class="java plain">JavaScriptInterface(getActivity()), </code><code class="java string">"JSInterface"</code><code class="java plain">);</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>後面的參數名字可以自己取，小蛙這邊使用 JSInterface，這個名字是讓 Javascript 可以知道透過哪個物件來呼叫。Android 這邊完成後接著在 html 中加入相對應的動作，例如：</p>
<div>
<div id="highlighter_659373" class="syntaxhighlighter  html">
<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="html plain">&lt;</code><code class="html keyword">input</code> <code class="html color1">type</code><code class="html plain">=</code><code class="html string">'button'</code> <code class="html color1">value</code><code class="html plain">=</code><code class="html string">'按我'</code> <code class="html color1">onclick</code><code class="html plain">=</code><code class="html string">'javascript:showToast();'</code><code class="html plain">&gt;</code></div>
<div class="line number2 index1 alt1"><code class="html plain">&lt;</code><code class="html keyword">script</code> <code class="html color1">type</code><code class="html plain">=</code><code class="html string">'text/javascript'</code><code class="html plain">&gt;</code></div>
<div class="line number3 index2 alt2"><code class="html plain">function showToast(){</code></div>
<div class="line number4 index3 alt1"><code class="html spaces">    </code><code class="html plain">if(JSInterface)</code></div>
<div class="line number5 index4 alt2"><code class="html spaces">        </code><code class="html plain">JSInterface.showToast();</code></div>
<div class="line number6 index5 alt1"><code class="html plain">}</code></div>
<div class="line number7 index6 alt2"><code class="html plain">&lt;/</code><code class="html keyword">script</code><code class="html plain">&gt;</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>設定一個 button 讓使用者點選時執行 function showToast()，而 showToast 方法中倘若存在 JSInterface 物件 (這個物件是上面 wv.addJavascriptInterface 時設定的)，就執行 JSInterface.showToast() 的方法 (這一步就會對應到我們自訂的 JavaScriptInterface 類別中的 public void showToast())，在 app 中顯示 Toast 訊息。<br />
到這邊，從 Android 呼叫 Javascript 以及從 Javascript 呼叫 Android 方法都已經完成，但是在 Android 2.3.x 版本中會發生一些錯誤，造成當機無法正確執行，解決方法請參考 <a href="https://noter.tw/3202/android-2-3-javascriptinterface-issue/" target="_blank" rel="noopener noreferrer" data-wpel-link="internal">Android 2.3 @JavascriptInterface Issue</a>。</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/" data-wpel-link="internal">Android 與 WebView 中的 Javascript 相互溝通</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/3204/android-%e8%88%87-webview-%e4%b8%ad%e7%9a%84-javascript-%e7%9b%b8%e4%ba%92%e6%ba%9d%e9%80%9a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>奇怪的 IE Cookie 設定</title>
		<link>https://noter.tw/3097/%e5%a5%87%e6%80%aa%e7%9a%84-ie-cookie-%e8%a8%ad%e5%ae%9a/</link>
					<comments>https://noter.tw/3097/%e5%a5%87%e6%80%aa%e7%9a%84-ie-cookie-%e8%a8%ad%e5%ae%9a/#comments</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Tue, 15 Oct 2013 12:11:41 +0000</pubDate>
				<category><![CDATA[技術相關]]></category>
		<category><![CDATA[網頁前端]]></category>
		<category><![CDATA[封鎖]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[IE10]]></category>
		<category><![CDATA[受限制的網站]]></category>
		<category><![CDATA[安全性]]></category>
		<category><![CDATA[網頁隱私權原則]]></category>
		<guid isPermaLink="false">http://wazai.net/?p=3097</guid>

					<description><![CDATA[<p>今天接到一個奇怪的問題單，所有的 Browser 都可以正常執行，唯獨 IE 10 會有問題 (小蛙接到單子之後測試，IE 8 也有問題)，花了一些時間找問題到底是什麼，這篇記錄一下，希望能幫到不小心&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/3097/%e5%a5%87%e6%80%aa%e7%9a%84-ie-cookie-%e8%a8%ad%e5%ae%9a/" data-wpel-link="internal">奇怪的 IE Cookie 設定</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>今天接到一個奇怪的問題單，所有的 Browser 都可以正常執行，唯獨 IE 10 會有問題 (小蛙接到單子之後測試，IE 8 也有問題)，花了一些時間找問題到底是什麼，這篇記錄一下，希望能幫到不小心路過的網友！<br />
<span id="more-3097"></span><br />
IE 真是 web 工程師心中的痛 &#8230; 這麼說似乎有些偏頗，不過對於小蛙跟小蛙的同事來說，的確是這樣，為什麼 Firefox, Chrome 可以的東西，到 IE 上怎麼樣都是不行，IE 上錯誤特別多除起錯又特別麻煩。為什麼說有失偏頗，因為小蛙有一個朋友就是 IE 掛的，他痛恨死 IE 以外的瀏覽器 &#8230; 這種需求這輩子沒見過！哈！<br />
問題是這樣的，A 網站中有個 &#8220;申請&#8221; 的按鈕，接著資料會用 POST 的方式到 B 網站，而 A 網站中有兩個頁面會有這個 &#8220;申請&#8221; 的按鈕，點了申請按鈕之後把所有資料 POST 到 B 網站，此時 B 網站需要做登入認證的動作，於是先把資料儲存在 cookie 中(應該是這樣，B 網站是之前外包給廠商的)，這樣聽起來問題很簡單，只要知道 B 網站是用 cookie 來做，大概就知道問題在哪了，但小蛙沒有經手 B 網站，也沒辦法看到 B 網站的 code &#8230;<br />
經過一番 IE 8, IE 10, Chrome, Firefox 交叉測試後，發現 IE 8 的狀態列有個小小的安全性提示(本來要截圖，結果 &#8230; 選了接受 cookie 就 &#8230; 看不到圖了)，幸好有使用 IE 8 做測試，真是不幸中的大幸，IE 10 完全自己暗槓起來什麼都不說啊 ~~~<br />
如果剛好用 IE 10 又剛好有用 cookie 又剛好遇到莫名其妙的錯誤，不妨花一點時間檢查一下 cookie 是不是被 IE 10 無聲的封鎖了！如果用 IE 8 會在狀態列中看到紅色叉叉很礙眼，很快就會發現 cookie 被封鎖了！</p>
<p style="text-align: left;">解開的方法 IE 10 -&gt; 右上角的設定 -&gt; 安全性 -&gt; 網頁隱私權原則</p>
<p style="text-align: left;"><a title="cookie.png" href="http://lh3.ggpht.com/-faOVuYIEC_k/Ul0ML1OOReI/AAAAAAAAILw/RazlHXBDKTc/w500-o/cookie.png" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" class="pe2-photo aligncenter" title="cookie.png" src="//lh3.ggpht.com/-faOVuYIEC_k/Ul0ML1OOReI/AAAAAAAAILw/RazlHXBDKTc/w500-o/cookie.png" alt="cookie.png" width="500" height="250"></a></p>
<p style="text-align: left;">可以看到很多網站，有的寫已封鎖，找到正在測試的網站點選右鍵打開就可以囉！</p>
<p><a title="cookie1.png" href="http://lh6.ggpht.com/-YFFBHui1bnQ/Ul0MyTAHlcI/AAAAAAAAIL4/xvny79IdjGI/s0/cookie1.png" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img decoding="async" class="pe2-photo aligncenter" title="cookie1.png" src="//lh6.ggpht.com/-YFFBHui1bnQ/Ul0MyTAHlcI/AAAAAAAAIL4/xvny79IdjGI/w500-o/cookie1.png" alt="cookie1.png"></a></p>
<p style="text-align: left;">
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/3097/%e5%a5%87%e6%80%aa%e7%9a%84-ie-cookie-%e8%a8%ad%e5%ae%9a/" data-wpel-link="internal">奇怪的 IE Cookie 設定</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/3097/%e5%a5%87%e6%80%aa%e7%9a%84-ie-cookie-%e8%a8%ad%e5%ae%9a/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
