[WordPress] 外掛分享: RationalSEO

首頁外掛目錄 › RationalSEO
WordPress 外掛 RationalSEO 的封面圖片
全新外掛
安裝啟用
尚無評分
24 天前
最後更新
問題解決
WordPress 5.0+ PHP 7.4+ v1.1.0 上架:2026-02-10

內容簡介

**總結:**

Rational SEO 提供現代網站所需的100%技術性SEO,而無需額外的資料庫臃腫、UI混亂或性能拖慢。

**問題與答案:**

1. Rational SEO 所遵循的哲學是什麼?
- Rational SEO嚴格拒絕那些不直接影響搜尋引擎或社交爬蟲的功能,例如內容評分、儀表板、分析、前端資產和404日誌。

2. 提到的一些功能包括哪些?
- Meta標籤、社交媒體標籤、結構化數據、XML網站地圖、編輯器整合等。

3. AI Assistant提供了哪些功能?
- AI支援的焦點關鍵字建議、生成的SEO標題和元數據、一鍵建議所有關鍵字、使用OpenAI GPT-4o-mini等。

4. 該外掛連接了哪些外部服務?
- RationalWP Plugin Directory 和 OpenAI API。

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.1.0) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「RationalSEO」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

Rational SEO provides 100% of the technical SEO requirements for modern sites with 0% of the database bloat, UI clutter, or performance drag.
Philosophy
Rational SEO rigorously rejects features that do not directly influence search engines or social crawlers:

No Content Scoring – No traffic lights, readability checks, or keyword density counters
No Dashboard – No “SEO Overview” widget or React-powered admin home
No Analytics – No ranking tracking or Google Search Console API integrations
No Frontend Assets – Zero CSS or JS files loaded on the frontend
No 404 Logging – Never writes 404 hits to the database

Features
Meta Tags

Custom title tags with configurable separator
Meta descriptions (manual or auto-generated from excerpt/content)
Robots meta (index/noindex control)
Canonical URLs
Google and Bing verification meta tags

Social Media

Open Graph tags (og:title, og:description, og:image, og:url, og:type, og:locale, og:site_name)
Twitter Cards (summary or summary_large_image)
Per-post social image override

Structured Data

JSON-LD schema output using @graph format
Organization or Person schema (configurable)
WebSite schema with publisher linking
WebPage schema
Article schema on posts/pages with author, dates, and images

XML Sitemaps

Sitemap index at /sitemap.xml
Per-post-type sitemaps with pagination
Transient caching with stale-while-revalidate
Content freshness filtering (exclude old content)
Post type exclusions

Editor Integration

Meta box on all public post types
Custom SEO title and description fields
Focus keyword field with real-time presence indicators (title, description, first paragraph, URL slug)
Noindex toggle per post
Canonical URL override
Social image override
Taxonomy term SEO fields (title, description, noindex, canonical)

Post Type Archives

Custom SEO title and description for each post type archive
Configure via Settings > Rational SEO > Archives tab

AI Assistant (optional)

AI-powered focus keyword suggestions
AI-generated SEO titles and meta descriptions
One-click “Suggest All” for keyword, title, and description together
Uses OpenAI GPT-4o-mini (requires your own API key)
Data sent only when you click — never in the background

External Services
This plugin connects to the following external services:
RationalWP Plugin Directory
This plugin fetches a list of available RationalWP plugins from rationalwp.com to display in the WordPress admin menu. Only the menu file version number is sent as a cache-busting query parameter. No user data is transmitted. The response is cached locally for 24 hours.

Service URL: https://rationalwp.com/plugins.json
Terms of Service: https://rationalwp.com/terms/
Privacy Policy: https://rationalwp.com/privacy/

OpenAI API (optional)
This plugin provides optional AI-powered SEO suggestions using the OpenAI API. When a site administrator configures an OpenAI API key in Settings > Rational SEO > General, users can click “Suggest” or “Generate” buttons in the post editor to receive AI-generated focus keywords, SEO titles, and meta descriptions.
Data is only sent when a user explicitly clicks an AI suggestion button. The data sent includes the post title and up to 2000 characters of post content (stripped of HTML), along with the user’s own API key for authentication. No data is sent automatically or in the background.

Service URL: https://api.openai.com/v1/chat/completions
Terms of Use: https://openai.com/policies/terms-of-use/
Privacy Policy: https://openai.com/policies/privacy-policy/

Hooks for developers
RationalSEO exposes a complete set of filters and actions so themes and plugins can customize or extend output without forking the plugin. All hooks were introduced in version 1.0.6.
Short-circuit filters
Return non-null to short-circuit default resolution; return null to fall through to internal logic.
These filters let you override the data that RationalSEO resolves internally. Return a non-null value to bypass the built-in logic entirely, or return null to let RationalSEO proceed as normal.

rationalseo_og_image_data — Return a (partial) image data array; missing keys are filled with safe defaults. Signature: ($pre, $context).
rationalseo_meta_description — Return a string to override the meta description. An empty string '' means “explicitly no description” and suppresses the tag. Signature: ($pre, $context).
rationalseo_post_seo_meta — Return an array of post SEO meta to override the database lookup. Signature: ($pre, $post_id).
rationalseo_term_seo_meta — Return an array of term SEO meta to override the database lookup. Signature: ($pre, $term_id).

Per-value filters
These filters run on the resolved value just before it is output. All use the signature ($value, $context).

rationalseo_document_title — string. The tag value before output.<br /> rationalseo_canonical_url — string. The rel=canonical URL before output.<br /> rationalseo_robots — array. The robots directives array (joined with , for output).<br /> rationalseo_og_locale — string. og:locale value before output.<br /> rationalseo_og_type — string. og:type value (e.g. website / article) before output.<br /> rationalseo_og_title — string. og:title value before output.<br /> rationalseo_og_description — string. og:description value before output.<br /> rationalseo_og_url — string. og:url value before output.<br /> rationalseo_og_site_name — string. og:site_name value before output.<br /> rationalseo_twitter_card_type — string. twitter:card value before output.<br /> rationalseo_twitter_title — string. twitter:title value before output.<br /> rationalseo_twitter_description — string. twitter:description value before output.</p> <p>Skip filters<br /> Return a truthy value to suppress an entire output block. Signature: ($skip, $context).</p> <p>rationalseo_skip_meta_description — Skip the meta description tag entirely.<br /> rationalseo_skip_canonical — Skip the canonical link tag entirely.<br /> rationalseo_skip_open_graph — Skip all Open Graph tags entirely.<br /> rationalseo_skip_twitter_cards — Skip all Twitter Card tags entirely.</p> <p>Example — disable Open Graph on the entire site:<br /> add_filter( 'rationalseo_skip_open_graph', '__return_true' );</p> <p>Schema (JSON-LD) filters<br /> RationalSEO emits a single JSON-LD @graph containing the sitewide Organization (or Person), WebSite, and WebPage nodes, plus an Article node on singular views. Two filters let you reshape it:</p> <p>rationalseo_singular_schema_type — string. The type resolved for a singular post type: article (default) keeps the Article entity, none omits the per-page entity while leaving the sitewide graph intact. Mirrors the per-post-type setting on the Schema tab. Signature: ($type, $post_type, $context).<br /> rationalseo_schema — array. The complete schema array (@context + @graph) just before output. Add, modify, or remove @graph nodes here. Returning an array with an empty @graph suppresses output entirely. Signature: ($schema, $context).</p> <p>The $context array passed to both filters contains: mode (e.g. singular, front_page, archive_term), queried_object, post_id (the queried post ID on singular views, else 0), and term_id.<br /> Example — output a Google-valid in-person Event for an event_instance post type from your post meta.<br /> First, set that post type to “None” on the Schema tab so RationalSEO does not also emit an Article node. Then build the Event node from your own meta keys and append it to the graph (the node joins the same @graph, so the page still has a single JSON-LD script and keeps the sitewide Organization/WebSite/WebPage data).<br /> Google requires name, startDate, and a location with both a name and a full address for a physical event; image, endDate, eventAttendanceMode, description, organizer, and offers are recommended. The example includes the required fields unconditionally and adds the recommended ones only when the underlying data exists:<br /> add_filter( 'rationalseo_schema', function ( $schema, $context ) {<br /> // Only act on single views of the target post type.<br /> if ( 'singular' !== $context['mode'] ) {<br /> return $schema;<br /> }<br /> $post = get_post( $context['post_id'] );<br /> if ( ! $post || 'event_instance' !== $post->post_type ) {<br /> return $schema;<br /> }</p> <p> // Replace every meta key below with the ones your post type actually uses.<br /> // Dates must be ISO 8601, e.g. 2026-09-01T09:00:00-07:00 (include the timezone).<br /> $start = get_post_meta( $post->ID, '_event_start', true );<br /> if ( empty( $start ) ) {<br /> return $schema; // startDate is required — no valid Event without it.<br /> }</p> <p> // Required: name, startDate, and a Place location with name + full address.<br /> $event = array(<br /> '@type' => 'Event',<br /> '@id' => get_permalink( $post ) . '#event',<br /> 'name' => get_the_title( $post ),<br /> 'startDate' => $start,<br /> 'eventAttendanceMode' => 'https://schema.org/OfflineEventAttendanceMode',<br /> 'eventStatus' => 'https://schema.org/EventScheduled',<br /> 'location' => array(<br /> '@type' => 'Place',<br /> 'name' => get_post_meta( $post->ID, '_venue_name', true ),<br /> 'address' => array(<br /> '@type' => 'PostalAddress',<br /> 'streetAddress' => get_post_meta( $post->ID, '_venue_street', true ),<br /> 'addressLocality' => get_post_meta( $post->ID, '_venue_city', true ),<br /> 'addressRegion' => get_post_meta( $post->ID, '_venue_region', true ),<br /> 'postalCode' => get_post_meta( $post->ID, '_venue_postal', true ),<br /> 'addressCountry' => get_post_meta( $post->ID, '_venue_country', true ),<br /> ),<br /> ),<br /> );</p> <p> // Recommended: add each only when its data is present.<br /> $end = get_post_meta( $post->ID, '_event_end', true );<br /> if ( ! empty( $end ) ) {<br /> $event['endDate'] = $end;<br /> }</p> <p> $image = get_the_post_thumbnail_url( $post, 'full' );<br /> if ( $image ) {<br /> $event['image'] = array( $image );<br /> }</p> <p> if ( has_excerpt( $post ) ) {<br /> $event['description'] = wp_strip_all_tags( get_the_excerpt( $post ) );<br /> }</p> <p> $organizer = get_post_meta( $post->ID, '_event_organizer', true );<br /> if ( ! empty( $organizer ) ) {<br /> $event['organizer'] = array(<br /> '@type' => 'Organization',<br /> 'name' => $organizer,<br /> );<br /> }</p> <p> // Admission/ticketing, if the event sells entry. Free events can omit this.<br /> $price = get_post_meta( $post->ID, '_event_price', true );<br /> if ( '' !== $price ) {<br /> $event['offers'] = array(<br /> '@type' => 'Offer',<br /> 'price' => $price,<br /> 'priceCurrency' => 'USD',<br /> 'availability' => 'https://schema.org/InStock',<br /> 'url' => get_permalink( $post ),<br /> );<br /> }</p> <p> $schema['@graph'][] = $event;<br /> return $schema;<br /> }, 10, 2 );</p> <p>Online or hybrid events differ: set eventAttendanceMode accordingly and provide the stream URL as a VirtualLocation (array( '@type' => 'VirtualLocation', 'url' => ... )) instead of (or alongside) the physical Place.<br /> The same pattern works for Product, Recipe, FAQPage, or any other Schema.org type — build the node from your meta and append it to $schema['@graph']. Setting the post type to “None” first prevents a duplicate Article node; leaving it on “Article” keeps both. Always confirm the final output on a live URL with Google’s Rich Results Test, since it cannot read a local-only site.<br /> Action injection points<br /> These actions fire immediately before and after each social meta block is emitted. They fire only when the block is not skipped via the corresponding skip filter. Signature: do_action( '...', $context ).</p> <p>rationalseo_before_open_graph — Fires before the Open Graph tags are output.<br /> rationalseo_after_open_graph — Fires after the Open Graph tags are output.<br /> rationalseo_before_twitter_cards — Fires before the Twitter Card tags are output.<br /> rationalseo_after_twitter_cards — Fires after the Twitter Card tags are output.</p> <p>Example — append a custom og:* tag after the standard Open Graph block:<br /> add_action( 'rationalseo_after_open_graph', function( $ctx ) {<br /> // Append extra og:* tags here.<br /> echo "<meta property=\"og:custom\" content=\"value\" />\n";<br /> } );</p> <p>The $context array<br /> All per-value filters, skip filters, and action hooks receive a $context array as their last argument. It is built by the internal build_context() method and always contains the following keys:</p> <p>mode — string. One of: front_page, home, singular, archive_term, archive_post_type, archive_author, archive_date, search, 404, fallback.<br /> queried_object — mixed. Result of get_queried_object() at resolution time. May be WP_Post, WP_Term, WP_Post_Type, WP_User, or null.<br /> post_id — int. Queried post ID when on a singular view; 0 otherwise.<br /> term_id — int. Queried term ID when on a taxonomy archive; 0 otherwise.</p> <p>Worked example<br /> Override og:type to event for a custom post type, leaving all other post types unchanged:<br /> add_filter( 'rationalseo_og_type', function( $type, $context ) {<br /> if ( 'singular' === $context['mode'] && 'tribe_events' === get_post_type( $context['post_id'] ) ) {<br /> return 'event';<br /> }<br /> return $type;<br /> }, 10, 2 );</p> <p>(tribe_events is illustrative — works for any CPT slug.) </p> <h2><span id="i-5">延伸相關外掛</span></h2> <div class="mxp-p-related"><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wp-sitemap-page/"><img decoding="async" src="https://ps.w.org/wp-sitemap-page/assets/icon-256x256.png?rev=981368" alt="WP Sitemap Page" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>WP Sitemap Page</strong><span class="mxp-p-related-desc">透過這個 WordPress 外掛,您現在可以輕鬆將站點地圖加入到任...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/table-of-contents-plus/"><img decoding="async" src="https://ps.w.org/table-of-contents-plus/assets/icon-256x256.png?rev=1151771" alt="Table of Contents Plus" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Table of Contents Plus</strong><span class="mxp-p-related-desc">一款功能強大但使用者友好的外掛程式,可自動建立適用於長頁...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/ps-auto-sitemap/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/ps-auto-sitemap_b97dba.svg" alt="PS Auto Sitemap" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>PS Auto Sitemap</strong><span class="mxp-p-related-desc">PS Auto Sitemap 是一個 WordPress 外掛,自動從您的 WordPre...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/xml-sitemap-feed/"><img decoding="async" src="https://ps.w.org/xml-sitemap-feed/assets/icon-128x128.png?rev=1112143" alt="XML Sitemap & Google News" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>XML Sitemap & Google News</strong><span class="mxp-p-related-desc">這個外掛動態地建立遵守 XML Sitemap 及 Google News Sitemap...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/vk-all-in-one-expansion-unit/"><img decoding="async" src="https://ps.w.org/vk-all-in-one-expansion-unit/assets/icon.svg?rev=3486502" alt="VK All in One Expansion Unit" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>VK All in One Expansion Unit</strong><span class="mxp-p-related-desc">VK All in One Expansion Unit 是一款功能強大的整合型外掛,...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/simple-sitemap/"><img decoding="async" src="https://ps.w.org/simple-sitemap/assets/icon.svg?rev=1411764" alt="Simple Sitemap – Create a Responsive HTML Sitemap" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Simple Sitemap – Create a Responsive HTML Sitemap</strong><span class="mxp-p-related-desc">簡單網站地圖 (Simple Sitemap) 是 WordPress 上最受歡迎的 H...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/squirrly-seo/"><img decoding="async" src="https://ps.w.org/squirrly-seo/assets/icon-256x256.png?rev=2724476" alt="GEO Plugin by Squirrly SEO" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>GEO Plugin by Squirrly SEO</strong><span class="mxp-p-related-desc">GEO Plugin by Squirrly SEO 旨在優化您的 WordPress 網站,...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/sitemap/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/sitemap_ffffff.svg" alt="Sitemap" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Sitemap</strong><span class="mxp-p-related-desc">此程式碼已經移至Page-list plugin。請刪除原先的Sitemap外掛...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/page-list/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/page-list_ffffff.svg" alt="Page-list" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Page-list</strong><span class="mxp-p-related-desc"> Advanced iFrame Pro Page-list 所有 Page-list 參數 捐助 G...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/xml-sitemap-generator-for-google/"><img decoding="async" src="https://ps.w.org/xml-sitemap-generator-for-google/assets/icon-256x256.gif?rev=3369212" alt="Dynamic XML Sitemaps Generator for Google" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Dynamic XML Sitemaps Generator for Google</strong><span class="mxp-p-related-desc">Dynamic XML Sitemaps Generator for Google 是一款功能強大...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/simple-wp-sitemap/"><img decoding="async" src="https://ps.w.org/simple-wp-sitemap/assets/icon-256x256.png?rev=1114139" alt="Simple Wp Sitemap" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Simple Wp Sitemap</strong><span class="mxp-p-related-desc">一個 WordPress 站點地圖外掛 Simple Wp Sitemap 是一個動態...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wp-realtime-sitemap/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/wp-realtime-sitemap.svg" alt="WP Realtime Sitemap" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>WP Realtime Sitemap</strong><span class="mxp-p-related-desc">這是一個網站地圖的 WordPress 外掛,可以讓您輕鬆地顯示所有...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/html-sitemap/"><img decoding="async" src="https://ps.w.org/html-sitemap/assets/icon.svg?rev=3458819" alt="HTML Page Sitemap (Block and Shortcode)" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>HTML Page Sitemap (Block and Shortcode)</strong><span class="mxp-p-related-desc">HTML Page Sitemap (Block and Shortcode) 外掛可透過短碼 [h...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/disable-wp-sitemaps/"><img decoding="async" src="https://ps.w.org/disable-wp-sitemaps/assets/icon-256x256.jpg?rev=2381391" alt="Disable WP Sitemaps" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Disable WP Sitemaps</strong><span class="mxp-p-related-desc">Disable WP Sitemaps 外掛可防止 WordPress 自動生成網站地圖...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wppao-sitemap/"><img decoding="async" src="https://ps.w.org/wppao-sitemap/assets/icon-256x256.jpg?rev=2312157" alt="Wppao Sitemap" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Wppao Sitemap</strong><span class="mxp-p-related-desc">WppaoSitemap 網站地圖生成外掛,由 Wppao 團隊所開發。 現在...</span></span></a></div> <p><script>document.addEventListener("DOMContentLoaded",function(){window.onpopstate=function(){location.href="https://www.mxp.tw/plugins/";};history.pushState({},"");});</script></p> <p><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-slot="9308222110"></ins><script>setMxpAdClient();(adsbygoogle = window.adsbygoogle || []).push({});</script></p> </div><!-- .entry-content --> </article><!-- #post--1 --> </main><!-- #main --> </div><!-- #primary --> </div><!-- #content --> <footer id="colophon" class="site-footer"> <aside class="widget-area" role="complementary" aria-label="頁尾"> <div class="widget-column footer-widget-1"> <section id="text-3" class="widget widget_text"><h2 class="widget-title">微薄主機費來源</h2> <div class="textwidget"><p><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br /> <ins class="adsbygoogle" style="display:block" data-ad-slot="1291294008" data-ad-format="auto" data-full-width-responsive="true"></ins><br /> <script>setMxpAdClient(); (adsbygoogle = window.adsbygoogle || []).push({}); </script></p> </div> </section><section id="text-2" class="widget widget_text"><h2 class="widget-title">Facebook 專頁</h2> <div class="textwidget"><div class="fb-page" data-href="https://www.facebook.com/a.tech.guy" data-tabs="timeline" data-width="" data-height="70" data-small-header="true" data-adapt-container-width="true" data-hide-cover="true" data-show-facepile="false"><blockquote cite="https://www.facebook.com/a.tech.guy" class="fb-xfbml-parse-ignore"><a rel="nofollow" href="https://www.facebook.com/a.tech.guy">一介資男</a></blockquote></div></div> </section> <section id="recent-posts-4" class="widget widget_recent_entries"> <h2 class="widget-title">近期文章</h2><nav aria-label="近期文章"> <ul> <li> <a href="https://www.mxp.tw/11670/">我找到漏洞,他們找來律師:一場善意揭露卻被法律威脅的真實案例</a> </li> <li> <a href="https://www.mxp.tw/11668/">讀後筆記|Child’s Play:矽谷「高度行動者」與虛無新貴的誕生</a> </li> <li> <a href="https://www.mxp.tw/11666/">AI 自主代理人的失控一擊:從 MJ Rathbun 事件看「配置即人格」的危險</a> </li> <li> <a href="https://www.mxp.tw/11664/">清理 Git 分支的最佳偷懶法:來自 CIA 外洩文件的一行指令</a> </li> <li> <a href="https://www.mxp.tw/11662/">ggml.ai 與 Hugging Face 的正式結盟:Local AI 生態的重要里程碑</a> </li> </ul> </nav></section><section id="categories-2" class="widget widget_categories"><h2 class="widget-title">文章分類</h2><nav aria-label="文章分類"> <ul> <li class="cat-item cat-item-6"><a href="https://www.mxp.tw/category/blog%e5%a4%a7%e5%b0%8f%e4%ba%8b/">Blog大小事</a> (26) </li> <li class="cat-item cat-item-252"><a href="https://www.mxp.tw/category/facebook%e5%90%8c%e6%ad%a5%e5%82%99%e4%bb%bd/">Facebook同步備份</a> (370) </li> <li class="cat-item cat-item-2310"><a href="https://www.mxp.tw/category/hackernews-daily/">Hacker News</a> (499) </li> <li class="cat-item cat-item-12"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/">技術相關</a> (582) <ul class='children'> <li class="cat-item cat-item-2319"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/ai-ml/">AI 與機器學習</a> (18) </li> <li class="cat-item cat-item-2321"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/api-integration/">API 與資料整合</a> (56) </li> <li class="cat-item cat-item-2323"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/seo-marketing/">SEO 與網站經營</a> (10) </li> <li class="cat-item cat-item-2315"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/wordpress/">WordPress</a> (296) <ul class='children'> <li class="cat-item cat-item-2324"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/wordpress/woocommerce/">WooCommerce 開發</a> (108) </li> <li class="cat-item cat-item-2326"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/wordpress/wordpress-theme/">佈景主題開發</a> (8) </li> <li class="cat-item cat-item-2325"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/wordpress/wordpress-plugin/">外掛開發</a> (71) </li> </ul> </li> <li class="cat-item cat-item-2317"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/server-admin/">伺服器管理</a> (121) </li> <li class="cat-item cat-item-2316"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/programming/">程式開發</a> (149) </li> <li class="cat-item cat-item-2320"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/database/">資料庫</a> (37) </li> <li class="cat-item cat-item-2318"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/security/">資訊安全</a> (57) </li> <li class="cat-item cat-item-2322"><a href="https://www.mxp.tw/category/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/dev-tools/">開發工具與環境</a> (42) </li> </ul> </li> <li class="cat-item cat-item-19"><a href="https://www.mxp.tw/category/%e6%94%9d%e5%bd%b1%e7%9b%b8%e9%97%9c/">攝影相關</a> (5) </li> <li class="cat-item cat-item-8"><a href="https://www.mxp.tw/category/%e6%96%b0%e8%81%9e%e8%b3%87%e8%a8%8a/">新聞資訊</a> (239) </li> <li class="cat-item cat-item-60"><a href="https://www.mxp.tw/category/temperature/">有溫度的文字</a> (72) </li> <li class="cat-item cat-item-1"><a href="https://www.mxp.tw/category/uncategorized/">未分類</a> (1) </li> </ul> </nav></section><section id="tag_cloud-3" class="widget widget_tag_cloud"><h2 class="widget-title">常用標籤</h2><nav aria-label="常用標籤"><div class="tagcloud"><a href="https://www.mxp.tw/tag/api/" class="tag-cloud-link tag-link-17 tag-link-position-1" style="font-size: 12.905109489051pt;" aria-label="API (42 個項目)">API</a> <a href="https://www.mxp.tw/tag/blog%e5%a4%a7%e5%b0%8f%e4%ba%8b/" class="tag-cloud-link tag-link-670 tag-link-position-2" style="font-size: 9.1240875912409pt;" aria-label="Blog大小事 (17 個項目)">Blog大小事</a> <a href="https://www.mxp.tw/tag/chrome/" class="tag-cloud-link tag-link-13 tag-link-position-3" style="font-size: 8.5109489051095pt;" aria-label="Chrome (15 個項目)">Chrome</a> <a href="https://www.mxp.tw/tag/docker/" class="tag-cloud-link tag-link-117 tag-link-position-4" style="font-size: 11.372262773723pt;" aria-label="Docker (29 個項目)">Docker</a> <a href="https://www.mxp.tw/tag/erp/" class="tag-cloud-link tag-link-1402 tag-link-position-5" style="font-size: 9.9416058394161pt;" aria-label="ERP (21 個項目)">ERP</a> <a href="https://www.mxp.tw/tag/facebook/" class="tag-cloud-link tag-link-219 tag-link-position-6" style="font-size: 16.07299270073pt;" aria-label="Facebook (86 個項目)">Facebook</a> <a href="https://www.mxp.tw/tag/facebook%e5%90%8c%e6%ad%a5/" class="tag-cloud-link tag-link-644 tag-link-position-7" style="font-size: 8.8175182481752pt;" aria-label="Facebook同步 (16 個項目)">Facebook同步</a> <a href="https://www.mxp.tw/tag/fb2wp/" class="tag-cloud-link tag-link-248 tag-link-position-8" style="font-size: 8.3065693430657pt;" aria-label="FB2WP (14 個項目)">FB2WP</a> <a href="https://www.mxp.tw/tag/google/" class="tag-cloud-link tag-link-80 tag-link-position-9" style="font-size: 12.496350364964pt;" aria-label="Google (38 個項目)">Google</a> <a href="https://www.mxp.tw/tag/https/" class="tag-cloud-link tag-link-90 tag-link-position-10" style="font-size: 9.5328467153285pt;" aria-label="HTTPS (19 個項目)">HTTPS</a> <a href="https://www.mxp.tw/tag/idempiere/" class="tag-cloud-link tag-link-1598 tag-link-position-11" style="font-size: 10.14598540146pt;" aria-label="iDempiere (22 個項目)">iDempiere</a> <a href="https://www.mxp.tw/tag/javascript/" class="tag-cloud-link tag-link-15 tag-link-position-12" style="font-size: 10.861313868613pt;" aria-label="JavaScript (26 個項目)">JavaScript</a> <a href="https://www.mxp.tw/tag/linux/" class="tag-cloud-link tag-link-65 tag-link-position-13" style="font-size: 9.5328467153285pt;" aria-label="Linux (19 個項目)">Linux</a> <a href="https://www.mxp.tw/tag/mac/" class="tag-cloud-link tag-link-115 tag-link-position-14" style="font-size: 10.14598540146pt;" aria-label="Mac (22 個項目)">Mac</a> <a href="https://www.mxp.tw/tag/mysql/" class="tag-cloud-link tag-link-39 tag-link-position-15" style="font-size: 11.474452554745pt;" aria-label="MySQL (30 個項目)">MySQL</a> <a href="https://www.mxp.tw/tag/nginx/" class="tag-cloud-link tag-link-36 tag-link-position-16" style="font-size: 11.678832116788pt;" aria-label="Nginx (31 個項目)">Nginx</a> <a href="https://www.mxp.tw/tag/nodejs/" class="tag-cloud-link tag-link-96 tag-link-position-17" style="font-size: 8.8175182481752pt;" aria-label="NodeJS (16 個項目)">NodeJS</a> <a href="https://www.mxp.tw/tag/php/" class="tag-cloud-link tag-link-34 tag-link-position-18" style="font-size: 16.788321167883pt;" aria-label="PHP (102 個項目)">PHP</a> <a href="https://www.mxp.tw/tag/plugin/" class="tag-cloud-link tag-link-4 tag-link-position-19" style="font-size: 10.656934306569pt;" aria-label="Plugin (25 個項目)">Plugin</a> <a href="https://www.mxp.tw/tag/seo/" class="tag-cloud-link tag-link-81 tag-link-position-20" style="font-size: 8.8175182481752pt;" aria-label="SEO (16 個項目)">SEO</a> <a href="https://www.mxp.tw/tag/ssl/" class="tag-cloud-link tag-link-89 tag-link-position-21" style="font-size: 8.5109489051095pt;" aria-label="SSL (15 個項目)">SSL</a> <a href="https://www.mxp.tw/tag/ubuntu/" class="tag-cloud-link tag-link-46 tag-link-position-22" style="font-size: 12.802919708029pt;" aria-label="Ubuntu (41 個項目)">Ubuntu</a> <a href="https://www.mxp.tw/tag/vps/" class="tag-cloud-link tag-link-48 tag-link-position-23" style="font-size: 12.905109489051pt;" aria-label="VPS (42 個項目)">VPS</a> <a href="https://www.mxp.tw/tag/woocommerce/" class="tag-cloud-link tag-link-449 tag-link-position-24" style="font-size: 17.197080291971pt;" aria-label="WooCommerce (110 個項目)">WooCommerce</a> <a href="https://www.mxp.tw/tag/wordpress/" class="tag-cloud-link tag-link-3 tag-link-position-25" style="font-size: 22pt;" aria-label="WordPress (331 個項目)">WordPress</a> <a href="https://www.mxp.tw/tag/%e4%bc%81%e6%a5%ad%e7%ae%a1%e7%90%86%e7%b3%bb%e7%b5%b1/" class="tag-cloud-link tag-link-2334 tag-link-position-26" style="font-size: 8pt;" aria-label="企業管理系統 (13 個項目)">企業管理系統</a> <a href="https://www.mxp.tw/tag/%e4%bc%ba%e6%9c%8d%e5%99%a8/" class="tag-cloud-link tag-link-52 tag-link-position-27" style="font-size: 9.1240875912409pt;" aria-label="伺服器 (17 個項目)">伺服器</a> <a href="https://www.mxp.tw/tag/%e5%a4%96%e6%8e%9b/" class="tag-cloud-link tag-link-42 tag-link-position-28" style="font-size: 14.233576642336pt;" aria-label="外掛 (56 個項目)">外掛</a> <a href="https://www.mxp.tw/tag/%e5%a4%96%e6%8e%9b%e9%96%8b%e7%99%bc/" class="tag-cloud-link tag-link-664 tag-link-position-29" style="font-size: 11.474452554745pt;" aria-label="外掛開發 (30 個項目)">外掛開發</a> <a href="https://www.mxp.tw/tag/%e5%ae%89%e5%85%a8%e6%80%a7/" class="tag-cloud-link tag-link-51 tag-link-position-30" style="font-size: 9.9416058394161pt;" aria-label="安全性 (21 個項目)">安全性</a> <a href="https://www.mxp.tw/tag/%e5%ae%a2%e8%a3%bd%e5%8c%96/" class="tag-cloud-link tag-link-614 tag-link-position-31" style="font-size: 8.8175182481752pt;" aria-label="客製化 (16 個項目)">客製化</a> <a href="https://www.mxp.tw/tag/%e5%b7%a5%e5%85%b7/" class="tag-cloud-link tag-link-281 tag-link-position-32" style="font-size: 8.8175182481752pt;" aria-label="工具 (16 個項目)">工具</a> <a href="https://www.mxp.tw/tag/%e5%bf%83%e5%be%97/" class="tag-cloud-link tag-link-172 tag-link-position-33" style="font-size: 11.167883211679pt;" aria-label="心得 (28 個項目)">心得</a> <a href="https://www.mxp.tw/tag/%e6%8a%80%e8%a1%93%e7%9b%b8%e9%97%9c/" class="tag-cloud-link tag-link-660 tag-link-position-34" style="font-size: 16.890510948905pt;" aria-label="技術相關 (104 個項目)">技術相關</a> <a href="https://www.mxp.tw/tag/%e6%95%99%e5%ad%b8/" class="tag-cloud-link tag-link-294 tag-link-position-35" style="font-size: 15.153284671533pt;" aria-label="教學 (70 個項目)">教學</a> <a href="https://www.mxp.tw/tag/%e6%96%b0%e8%81%9e%e8%b3%87%e8%a8%8a/" class="tag-cloud-link tag-link-671 tag-link-position-36" style="font-size: 19.036496350365pt;" aria-label="新聞資訊 (168 個項目)">新聞資訊</a> <a href="https://www.mxp.tw/tag/%e6%9c%89%e6%ba%ab%e5%ba%a6%e7%9a%84%e6%96%87%e5%ad%97/" class="tag-cloud-link tag-link-746 tag-link-position-37" style="font-size: 14.335766423358pt;" aria-label="有溫度的文字 (58 個項目)">有溫度的文字</a> <a href="https://www.mxp.tw/tag/%e6%a9%9f%e5%99%a8%e4%ba%ba/" class="tag-cloud-link tag-link-534 tag-link-position-38" style="font-size: 8.5109489051095pt;" aria-label="機器人 (15 個項目)">機器人</a> <a href="https://www.mxp.tw/tag/%e7%a8%8b%e5%bc%8f%e9%96%8b%e7%99%bc/" class="tag-cloud-link tag-link-1590 tag-link-position-39" style="font-size: 11.372262773723pt;" aria-label="程式開發 (29 個項目)">程式開發</a> <a href="https://www.mxp.tw/tag/%e7%ad%86%e8%a8%98/" class="tag-cloud-link tag-link-514 tag-link-position-40" style="font-size: 8.3065693430657pt;" aria-label="筆記 (14 個項目)">筆記</a> <a href="https://www.mxp.tw/tag/%e7%b6%93%e7%87%9f/" class="tag-cloud-link tag-link-702 tag-link-position-41" style="font-size: 10.656934306569pt;" aria-label="經營 (25 個項目)">經營</a> <a href="https://www.mxp.tw/tag/%e7%b6%b2%e7%ab%99%e9%96%8b%e7%99%bc/" class="tag-cloud-link tag-link-551 tag-link-position-42" style="font-size: 11.985401459854pt;" aria-label="網站開發 (34 個項目)">網站開發</a> <a href="https://www.mxp.tw/tag/%e8%b3%87%e6%96%99%e5%ba%ab/" class="tag-cloud-link tag-link-1043 tag-link-position-43" style="font-size: 8pt;" aria-label="資料庫 (13 個項目)">資料庫</a> <a href="https://www.mxp.tw/tag/%e9%96%8b%e6%ba%90erp/" class="tag-cloud-link tag-link-2335 tag-link-position-44" style="font-size: 8.5109489051095pt;" aria-label="開源ERP (15 個項目)">開源ERP</a> <a href="https://www.mxp.tw/tag/%e9%96%8b%e7%99%bc/" class="tag-cloud-link tag-link-479 tag-link-position-45" style="font-size: 11.678832116788pt;" aria-label="開發 (31 個項目)">開發</a></div> </nav></section><section id="custom_html-2" class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><script type="text/javascript"> google_ad_client = "ca-pub-1939980533457134"; /*google_ad_host = "ca-host-pub-7449992691305813";    google_ad_host_channel = "2031107259";*/ google_ad_slot = "1291294008"; google_ad_format = "auto"; if (!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))) { google_ad_width = 300; google_ad_height = 250; }else{ google_ad_width = 300; google_ad_height = 600; } </script> <!-- mxp-sidebar-auto_320x250 --> <script type="text/javascript" src="//pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div></section> </div> </aside><!-- .widget-area --> <div class="site-info"> <a class="site-name" href="https://www.mxp.tw/" rel="home">一介資男</a>, <a rel="nofollow" href="https://tw.wordpress.org/" class="imprint"> 本站採用 WordPress 建置 </a> <nav class="footer-navigation" aria-label="頁尾選單"> <div class="menu-links-container"><ul id="menu-links" class="footer-menu"><li id="menu-item-7040" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7040"><a rel="nofollow" href="https://www.facebook.com/a.tech.guy">Facebook</a></li> <li id="menu-item-7041" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7041"><a rel="nofollow" href="https://github.com/nczz">GitHub</a></li> <li id="menu-item-9302" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-9302"><a href="https://www.mxp.tw/statement-policy/">使用者條款與隱私權聲明</a></li> </ul></div> </nav><!-- .footer-navigation --> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/mxp_tw/*","/wp-content/themes/twentynineteen/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script type="text/html" id="tmpl-cmswt-Result-itemTemplate--default"> <# if(data.taxonomy === undefined){ #> <div class="hit-header"> <# var imageHTML = ''; if(data.post_thumbnail_html !== undefined && data.post_thumbnail_html !== ''){ imageHTML = data.post_thumbnail_html }else if(data.post_thumbnail !== undefined && data.post_thumbnail !== ''){ imageHTML = `<img src="${data.post_thumbnail}" alt="${data.post_title}" class="ais-Hit-itemImage" />` } else{ imageHTML = `<img src="https://www.mxp.tw/wp-content/plugins/search-with-typesense/assets/images/placeholder-300x300.jpg" alt="${data.post_title}" class="ais-Hit-itemImage" />` } #> <# if(imageHTML !== ''){ #> <a href="{{{data._highlightResult.permalink.value}}}" class="hit-header--link" rel="nofollow noopener">{{{imageHTML}}}</a> <# } #> </div> <# } #> <div class="hit-content"> <# if(data._highlightResult.permalink !== undefined ) { #> <a href="{{{data._highlightResult.permalink.value}}}" class="hit-contentLink" rel="nofollow noopener"><h5 class="title"> {{{data.formatted.post_title}}}</h5></a> <# } #> <# if( data.post_type === 'post' ) { #> <div class="hit-meta"> <span class="posted-by"> By {{data.post_author}} </span> <span class="posted-on"> <time datetime="">{{data.formatted.postedDate}}</time> </span> <# if ( Object.keys(data.formatted.cats).length > 0 ) { #> <div class="hit-cats"> <# for ( let key in data.formatted.cats ) { #> <div class="hit-cat"><a rel="nofollow" href="{{{data.formatted.cats[key]}}}">{{{key}}}</a>,</div> <# } #> </div> <# } #> </div> <# } #> <div class="hit-description">{{{data.formatted.post_content}}}</div> <div class="hit-link"> <a rel="nofollow" href="{{data.permalink}}">Read More...</a> </div> </div> </script><script type="text/html" id="tmpl-cmswt-NoSearchResults-default"> <div class="cmswt-noSearchResults cmswt-NoSearchResults-default"> No results found </div> </script><script type="text/html" id="tmpl-cm-autocomplete"> <div class="aa-ItemWrapper"> <div class="aa-ItemContent"> <div class="aa-ItemIcon aa-ItemIcon--alignTop"> <# if ( data.document.post_thumbnail !== '' && data.document.post_thumbnail !== undefined ) { #> <img src="{{{data.document.post_thumbnail}}}" alt="{{data.document.post_title}}" width="40" height="40" /> <# } else { #> <img src="https://www.mxp.tw/wp-content/plugins/search-with-typesense/assets/placeholder.jpg" alt="{{data.document.post_title}}" width="40" height="40" /> <# } #> </div> <div class="aa-ItemContentBody"> <div class="aa-ItemContentTitle"> {{{data.formatted.post_title}}} </div> <div class="aa-ItemContentDescription"> {{data.formatted.sliced_content}} </div> </div> </div> </div> </script><script type="text/html" id="tmpl-cm-autocomplete-header"> <h5>{{{data.name}}}</h5> </script><script type="text/html" id="tmpl-cm-autocomplete-no-results-found">No Results Found</script> <style> .ais-Highlight-highlighted, .ais-Snippet-highlighted, .hit-description mark { background-color: #ffc168 } </style> <div class="cmswt-InstantSearchPopup"> <div class="cmswt-InstantSearchPopup--results"> <a href="#" class="cmswt-InstantSearchPopup--closeIcon" title="close"> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> </svg> </a> <div class="cmswt-InstantSearch ais-InstantSearch cm_swt_instant_search_1 single-source" data-id="cm_swt_instant_search_1" data-config="{"filter":"show","post_types":["post"],"per_page":"4","pagination":"infinite","sortby":"show","columns":"1","placeholder":"Search for...","query_by":"post_title,post_content","sticky_first":"no","custom_class":"","search_query":"","selected_filters":"hide","stats":"hide","routing":"disable","unique_id":"cm_swt_instant_search_1","collections":["post"]}" data-facets="{"post":["category"]}" data-placeholder="Search for..." data-query_by="post_title,post_content" data-sticky_first="no" data-additional_search_params="[]" data-search_query="" data-additional_config="[]" data-routing="disable" > <div class="cmswt-InstantSearch-overlay cmswt-FilterPanel-itemsClose"></div> <div class="cmswt-Header"> <div class="cmswt-SearchBox" data-settings="[]" ></div><div class="cmswt-CollectionMenu cmswt-CollectionMenu--singleSource"> <div class="cmswt-CollectionMenu-current"> <span class="cmswt-CollectionMenu-currentLabel">文章</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 cmswt-CollectionMenu-icon" width="24" height="25" viewBox="0 0 24 25" fill="none"> <path d="M9 5.50001C8.73478 5.50001 8.48043 5.60537 8.29289 5.7929C8.10536 5.98044 8 6.23479 8 6.50001C8 6.76523 8.10536 7.01958 8.29289 7.20712C8.48043 7.39465 8.73478 7.50001 9 7.50001C9.26522 7.50001 9.51957 7.39465 9.70711 7.20712C9.89464 7.01958 10 6.76523 10 6.50001C10 6.23479 9.89464 5.98044 9.70711 5.7929C9.51957 5.60537 9.26522 5.50001 9 5.50001ZM6.17 5.50001C6.3766 4.91448 6.75974 4.40744 7.2666 4.0488C7.77346 3.69015 8.37909 3.49756 9 3.49756C9.62091 3.49756 10.2265 3.69015 10.7334 4.0488C11.2403 4.40744 11.6234 4.91448 11.83 5.50001H19C19.2652 5.50001 19.5196 5.60537 19.7071 5.7929C19.8946 5.98044 20 6.23479 20 6.50001C20 6.76523 19.8946 7.01958 19.7071 7.20712C19.5196 7.39465 19.2652 7.50001 19 7.50001H11.83C11.6234 8.08554 11.2403 8.59258 10.7334 8.95122C10.2265 9.30986 9.62091 9.50246 9 9.50246C8.37909 9.50246 7.77346 9.30986 7.2666 8.95122C6.75974 8.59258 6.3766 8.08554 6.17 7.50001H5C4.73478 7.50001 4.48043 7.39465 4.29289 7.20712C4.10536 7.01958 4 6.76523 4 6.50001C4 6.23479 4.10536 5.98044 4.29289 5.7929C4.48043 5.60537 4.73478 5.50001 5 5.50001H6.17ZM15 11.5C14.7348 11.5 14.4804 11.6054 14.2929 11.7929C14.1054 11.9804 14 12.2348 14 12.5C14 12.7652 14.1054 13.0196 14.2929 13.2071C14.4804 13.3947 14.7348 13.5 15 13.5C15.2652 13.5 15.5196 13.3947 15.7071 13.2071C15.8946 13.0196 16 12.7652 16 12.5C16 12.2348 15.8946 11.9804 15.7071 11.7929C15.5196 11.6054 15.2652 11.5 15 11.5ZM12.17 11.5C12.3766 10.9145 12.7597 10.4074 13.2666 10.0488C13.7735 9.69015 14.3791 9.49756 15 9.49756C15.6209 9.49756 16.2265 9.69015 16.7334 10.0488C17.2403 10.4074 17.6234 10.9145 17.83 11.5H19C19.2652 11.5 19.5196 11.6054 19.7071 11.7929C19.8946 11.9804 20 12.2348 20 12.5C20 12.7652 19.8946 13.0196 19.7071 13.2071C19.5196 13.3947 19.2652 13.5 19 13.5H17.83C17.6234 14.0855 17.2403 14.5926 16.7334 14.9512C16.2265 15.3099 15.6209 15.5025 15 15.5025C14.3791 15.5025 13.7735 15.3099 13.2666 14.9512C12.7597 14.5926 12.3766 14.0855 12.17 13.5H5C4.73478 13.5 4.48043 13.3947 4.29289 13.2071C4.10536 13.0196 4 12.7652 4 12.5C4 12.2348 4.10536 11.9804 4.29289 11.7929C4.48043 11.6054 4.73478 11.5 5 11.5H12.17ZM9 17.5C8.73478 17.5 8.48043 17.6054 8.29289 17.7929C8.10536 17.9804 8 18.2348 8 18.5C8 18.7652 8.10536 19.0196 8.29289 19.2071C8.48043 19.3947 8.73478 19.5 9 19.5C9.26522 19.5 9.51957 19.3947 9.70711 19.2071C9.89464 19.0196 10 18.7652 10 18.5C10 18.2348 9.89464 17.9804 9.70711 17.7929C9.51957 17.6054 9.26522 17.5 9 17.5ZM6.17 17.5C6.3766 16.9145 6.75974 16.4074 7.2666 16.0488C7.77346 15.6902 8.37909 15.4976 9 15.4976C9.62091 15.4976 10.2265 15.6902 10.7334 16.0488C11.2403 16.4074 11.6234 16.9145 11.83 17.5H19C19.2652 17.5 19.5196 17.6054 19.7071 17.7929C19.8946 17.9804 20 18.2348 20 18.5C20 18.7652 19.8946 19.0196 19.7071 19.2071C19.5196 19.3947 19.2652 19.5 19 19.5H11.83C11.6234 20.0855 11.2403 20.5926 10.7334 20.9512C10.2265 21.3099 9.62091 21.5025 9 21.5025C8.37909 21.5025 7.77346 21.3099 7.2666 20.9512C6.75974 20.5926 6.3766 20.0855 6.17 19.5H5C4.73478 19.5 4.48043 19.3947 4.29289 19.2071C4.10536 19.0196 4 18.7652 4 18.5C4 18.2348 4.10536 17.9804 4.29289 17.7929C4.48043 17.6054 4.73478 17.5 5 17.5H6.17Z" fill="#696969"/> </svg> </div> <ul class="cmswt-IndexSwitcher"> <li class="cmswt-IndexSwitcher-item active"> <a href="#" class="cmswt-IndexSwitcher-link" data-instance_id="cm_swt_instant_search_1" data-collection="post"> 文章 </a> </li> </ul> </div><div class="cmswt-FilterPanel-toggle"> <span class="cmswt-FilterPanel-toggleLabel"> Filter </span> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 cmswt-FilterPanel-toggleIcon" width="20" height="21" viewBox="0 0 20 21" fill="none"> <path d="M2.1875 2.6875H17.8125V4.5625L11.5625 11.4375V16.4375L8.4375 18.3125V11.4375L2.1875 4.5625V2.6875Z" stroke="#696969" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="cmswt-Sort"> <div class="cmswt-SortBy cmswt-SortBy-post" data-settings="{"items":[{"label":"Recent","value":"post"},{"label":"Oldest","value":"post\/sort\/sort_by_date:asc"}]}" ></div> </div></div> <div class="cmswt-FilterPanel"> <div class="cmswt-FilterPanel-items"> <div class="cmswt-FilterPanel-itemsPopupHeader"> <div class="cmswt-FilterPanel-itemsPopupLabel"> <h5 class="cmswt-FilterPanel-itemsPopupLabelHeader">Apply Filters</h5> <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 cmswt-FilterPanel-itemsPopupHeaderCloseLogo cmswt-FilterPanel-itemsClose" width="16" height="17" viewBox="0 0 16 17" fill="none"> <path d="M11.3334 5.16666L4.66675 11.8333M4.66675 5.16666L11.3334 11.8333" stroke="#2E2E2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </div> <div class="cmswt-FilterPanel-itemsContent"> <div class="cmswt-Filter cmswt-Filter-category cmswt-Filter-collection_post" data-facet_id="post_category" data-label="category" data-title="Category" data-settings="{"searchable":false}" data-filter_type="refinement" ></div> </div> <div class="cmswt-FilterPanel-itemsFooter"> <a class="cmswt-FilterPanel-itemsFooterCloseLink cmswt-FilterPanel-itemsClose">Close</a> </div> </div> </div> <div class="cmswt-MainPanel"> <div class="cmswt-Results"> <div class="cmswt-Result cmswt-Result-post"> <div class="cmswt-Result-hits cmswt-Result-hits_post"></div><div class="cmswt-Pagination cmswt-Pagination-post cmswt-Pagination--infinite"></div> </div> </div> </div></div> </div> </div> <style>.grecaptcha-badge{ visibility: collapse !important; }</style><style> ins.adsbygoogle[data-ad-status="unfilled"] { display: none !important; } </style> <a style="display:none;" rel="me nofollow" href="https://hcchiang.com/@hi">Mastodon</a> <script type="application/ld+json" id="slim-seo-schema">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.mxp.tw/#website","url":"https://www.mxp.tw/","name":"一介資男","description":"WordPress 開發者 & iDempiere ERP 顧問 — 分享 Web 開發、伺服器管理、資安與開源 ERP 實戰經驗","inLanguage":"zh-TW","potentialAction":{"@id":"https://www.mxp.tw/#searchaction"},"publisher":{"@id":"https://www.mxp.tw/#person"}},{"@type":"SearchAction","@id":"https://www.mxp.tw/#searchaction","target":"https://www.mxp.tw/?s={search_term_string}","query-input":"required name=search_term_string"},{"@type":"BreadcrumbList","name":"導覽標記","@id":"https://www.mxp.tw/plugins/rationalseo/#breadcrumblist","itemListElement":[{"@type":"ListItem","position":1,"name":"首頁","item":"https://www.mxp.tw/"},{"@type":"ListItem","position":2,"name":"[WordPress] 外掛分享: RationalSEO"}]},{"@type":"WebPage","@id":"https://www.mxp.tw/plugins/rationalseo/#webpage","url":"https://www.mxp.tw/plugins/rationalseo/","inLanguage":"zh-TW","name":"RationalSEO — WordPress 外掛中文介紹","description":"**總結:** Rational SEO 提供現代網站所需的100%技術性SEO,而無需額外的資料庫臃腫、UI混亂或性能拖慢。 **問題與答案:** 1. Rational SEO 所遵循的哲學是什麼...","datePublished":"2026-07-17T14:58:52+08:00","dateModified":"-001-11-30T08:06:00+08:06","isPartOf":{"@id":"https://www.mxp.tw/#website"},"breadcrumb":{"@id":"https://www.mxp.tw/plugins/rationalseo/#breadcrumblist"},"potentialAction":{"@id":"https://www.mxp.tw/plugins/rationalseo/#readaction"},"primaryImageOfPage":{"@id":"https://www.mxp.tw/plugins/rationalseo/#thumbnail"},"image":{"@id":"https://www.mxp.tw/plugins/rationalseo/#thumbnail"}},{"@type":"ReadAction","@id":"https://www.mxp.tw/plugins/rationalseo/#readaction","target":"https://www.mxp.tw/plugins/rationalseo/"},{"@type":"Person","@id":"https://www.mxp.tw/#person","name":"Chun","alternateName":"一介資男","url":"https://www.mxp.tw/","description":"WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。","image":{"@type":"ImageObject","@id":"https://www.mxp.tw/#personimage","url":"https://www.mxp.tw/wp-content/uploads/2019/06/cropped-竣大頭貼.png","contentUrl":"https://www.mxp.tw/wp-content/uploads/2019/06/cropped-竣大頭貼.png","width":190,"height":190},"sameAs":["https://github.com/nczz/","https://profiles.wordpress.org/mxp/","https://www.facebook.com/mxp.tw","https://hcchiang.com/@hi"],"jobTitle":"WordPress 開發者 / iDempiere ERP 顧問","knowsAbout":["WordPress","PHP","Web Development","Server Administration","Open Source","iDempiere","ERP","Java"]},{"@type":"ImageObject","@id":"https://www.mxp.tw/plugins/rationalseo/#thumbnail","url":"https://ps.w.org/rationalseo/assets/banner-1544x500.png?rev=3459391"},{"@type":"SoftwareApplication","name":"RationalSEO","description":"**總結:**\n\nRational SEO 提供現代網站所需的100%技術性SEO,而無需額外的資料庫臃腫、UI混亂或性能拖慢。\n\n**問題與答案:**\n\n1. Rational SEO 所遵循的哲學是什麼...","applicationCategory":"WordPress Plugin","operatingSystem":"WordPress","url":"https://www.mxp.tw/plugins/rationalseo/","installUrl":"https://tw.wordpress.org/plugins/rationalseo/","image":"https://ps.w.org/rationalseo/assets/banner-1544x500.png?rev=3459391","offers":{"@type":"Offer","price":"0","priceCurrency":"TWD"},"softwareVersion":"1.1.0","downloadUrl":"https://downloads.wordpress.org/plugin/rationalseo.1.1.0.zip","softwareRequirements":"WordPress 5.0+, PHP 7.4+","author":{"@type":"Person","name":"rationalwp","url":"https://profiles.wordpress.org/rationalwp/"}}]}</script> <script id="module-prism-line-number"> (function($) { $(function() { $("code").each(function() { var parent_div = $(this).parent("pre"); var pre_css = $(this).attr("class"); if (typeof pre_css !== "undefined" && -1 !== pre_css.indexOf("language-")) { parent_div.addClass("line-numbers"); } }); }); })(jQuery); </script> <script id="module-clipboard"> (function($) { $(function() { var pre = document.getElementsByTagName("pre"); var pasteContent = document.getElementById("paste-content"); var hasLanguage = false; for (var i = 0; i < pre.length; i++) { var codeClass = pre[i].children[0].className; var isLanguage = codeClass.indexOf("language-"); var excludedCodeClassNames = [ "language-katex", "language-seq", "language-sequence", "language-flow", "language-flowchart", "language-mermaid", ]; var isExcluded = excludedCodeClassNames.indexOf(codeClass); if (isExcluded !== -1) { isLanguage = -1; } if (isLanguage !== -1) { var current_pre = pre[i]; var parent = current_pre.parentNode; var div = document.createElement("div"); div.style['position'] = 'relative'; parent.replaceChild(div, current_pre); var button = document.createElement("button"); button.className = "copy-button"; button.textContent = "Copy"; div.appendChild(current_pre); div.appendChild(button); hasLanguage = true; } }; if (hasLanguage) { var copyCode = new ClipboardJS(".copy-button", { target: function(trigger) { return trigger.previousElementSibling; } }); copyCode.on("success", function(event) { event.clearSelection(); event.trigger.textContent = "Copied"; window.setTimeout(function() { event.trigger.textContent = "Copy"; }, 2000); }); } }); })(jQuery); </script> <script id="avc_frontend-js-extra"> var AdRefreshControl = {"advertiserIds":[],"lineItemIds":[],"sizesToExclude":["fluid"],"slotIdsToExclude":[],"viewabilityThreshold":"50","refreshInterval":"30","maximumRefreshes":"12","refreshCallback":""}; //# sourceURL=avc_frontend-js-extra </script> <script id="avc_frontend-js" defer src="https://www.mxp.tw/wp-content/plugins/ad-refresh-control/dist/js/frontend.js"></script> <script id="code-prettify-js-before"> var codePrettifyLoaderBaseUrl = "https:\/\/www.mxp.tw\/wp-content\/plugins\/code-prettify\/prettify"; //# sourceURL=code-prettify-js-before </script> <script id="code-prettify-js" defer src="https://www.mxp.tw/wp-content/plugins/code-prettify/prettify/run_prettify.js"></script> <script id="toc-front-js-extra"> var tocplus = {"smooth_scroll":"1","visibility_show":"\u986f\u793a","visibility_hide":"\u96b1\u85cf","width":"Auto"}; //# sourceURL=toc-front-js-extra </script> <script id="toc-front-js" defer src="https://www.mxp.tw/wp-content/plugins/table-of-contents-plus/front.min.js"></script> <script data-wp-strategy="defer" defer id="twentynineteen-touch-navigation-js" src="https://www.mxp.tw/wp-content/themes/twentynineteen/js/touch-keyboard-navigation.js"></script> <script id="clipboard-js" defer src="https://www.mxp.tw/wp-includes/js/clipboard.min.js"></script> <script id="heartbeat-js" src="https://www.mxp.tw/wp-content/plugins/wp-rocket/assets/js/heartbeat.js"></script> <script id="regenerator-runtime-js" defer src="https://www.mxp.tw/wp-includes/js/dist/vendor/regenerator-runtime.min.js"></script> <script id="moment-js" src="https://www.mxp.tw/wp-includes/js/dist/vendor/moment.min.js"></script> <script id="moment-js-after"> moment.updateLocale( 'zh_TW', {"months":["1 \u6708","2 \u6708","3 \u6708","4 \u6708","5 \u6708","6 \u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708"],"monthsShort":["1 \u6708","2 \u6708","3 \u6708","4 \u6708","5 \u6708","6 \u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708"],"weekdays":["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],"weekdaysShort":["\u9031\u65e5","\u9031\u4e00","\u9031\u4e8c","\u9031\u4e09","\u9031\u56db","\u9031\u4e94","\u9031\u516d"],"week":{"dow":1},"longDateFormat":{"LT":"H:i:s","LTS":null,"L":null,"LL":"Y/m/d","LLL":"Y \u5e74 n \u6708 j \u65e5a g:i","LLLL":null}} ); //# sourceURL=moment-js-after </script> <script id="wp-hooks-js" src="https://www.mxp.tw/wp-includes/js/dist/hooks.min.js"></script> <script id="wp-deprecated-js" src="https://www.mxp.tw/wp-includes/js/dist/deprecated.min.js"></script> <script id="wp-date-js" src="https://www.mxp.tw/wp-includes/js/dist/date.min.js"></script> <script id="wp-date-js-after"> wp.date.setSettings( {"l10n":{"locale":"zh_TW","months":["1 \u6708","2 \u6708","3 \u6708","4 \u6708","5 \u6708","6 \u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708"],"monthsShort":["1 \u6708","2 \u6708","3 \u6708","4 \u6708","5 \u6708","6 \u6708","7 \u6708","8 \u6708","9 \u6708","10 \u6708","11 \u6708","12 \u6708"],"weekdays":["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],"weekdaysShort":["\u9031\u65e5","\u9031\u4e00","\u9031\u4e8c","\u9031\u4e09","\u9031\u56db","\u9031\u4e94","\u9031\u516d"],"meridiem":{"am":"\u4e0a\u5348","pm":"\u4e0b\u5348","AM":"\u4e0a\u5348","PM":"\u4e0b\u5348"},"relative":{"future":"%s\u5f8c","past":"%s\u524d","s":"1 \u79d2","ss":"%d \u79d2","m":"1 \u5206\u9418","mm":"%d \u5206\u9418","h":"1 \u5c0f\u6642","hh":"%d \u5c0f\u6642","d":"1 \u5929","dd":"%d \u5929","M":"1 \u500b\u6708","MM":"%d \u500b\u6708","y":"1 \u5e74","yy":"%d \u5e74"},"startOfWeek":1},"formats":{"time":"H:i:s","date":"Y/m/d","datetime":"Y \u5e74 n \u6708 j \u65e5a g:i","datetimeAbbreviated":"Y \u5e74 n \u6708 j \u65e5a g:i"},"timezone":{"offset":8,"offsetFormatted":"8","string":"Asia/Taipei","abbr":"CST"}} ); //# sourceURL=wp-date-js-after </script> <script id="underscore-js" src="https://www.mxp.tw/wp-includes/js/underscore.min.js"></script> <script id="wp-util-js-extra"> var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}}; //# sourceURL=wp-util-js-extra </script> <script id="wp-util-js" src="https://www.mxp.tw/wp-includes/js/wp-util.min.js"></script> <script id="cm-typesense-instant-search-js-extra"> var cm_typesense_instant_search_default_settings = {"debug":"","search_api_key":"EdWQumsaGeVn0VfZWFKLaPS994voOBUV","port":"443","node":"search.wp-meetups.com","protocol":"https://","enabled_post_types":["post"],"available_post_types":{"post":{"label":"Posts","value":"post"},"page":{"label":"Pages","value":"page"},"category":{"label":"Category","value":"category","type":"taxonomy"}},"search_config":{"post_type":{"post":{"label":"\u6587\u7ae0","max_suggestions":"3"}},"taxonomy":{"category":"Categories"}},"date_format":"Y/m/d","localized_strings":{"load_more":"Load More","show_less":"Show less","show_more":"Show more"},"elementor_edit_mode":"false"}; //# sourceURL=cm-typesense-instant-search-js-extra </script> <script id="cm-typesense-instant-search-js" defer src="https://www.mxp.tw/wp-content/plugins/search-with-typesense//build/frontend/instant-search.js"></script> <script id="cm-typesense-popup-js-extra"> var cm_typesense_popup_default_settings = {"hijack_wp_search__type":"instant_search"}; //# sourceURL=cm-typesense-popup-js-extra </script> <script id="cm-typesense-popup-js" defer src="https://www.mxp.tw/wp-content/plugins/search-with-typesense//build/frontend/popup.js"></script> <script>var rocket_beacon_data = {"ajax_url":"https:\/\/www.mxp.tw\/wp-admin\/admin-ajax.php","nonce":"e5682abeb3","url":"https:\/\/www.mxp.tw\/plugins\/rationalseo","is_mobile":false,"width_threshold":1600,"height_threshold":700,"delay":500,"debug":null,"status":{"atf":false,"lrc":false,"preconnect_external_domain":true},"elements":"img, video, picture, p, main, div, li, svg, section, header, span","lrc_threshold":1800,"preconnect_external_domain_elements":["link","script","iframe"],"preconnect_external_domain_exclusions":[]}</script><script data-name="wpr-wpr-beacon" src='https://www.mxp.tw/wp-content/plugins/wp-rocket/assets/js/wpr-beacon.min.js' async></script></body> </html>