[WordPress] 外掛分享: RationalSEO

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

內容簡介

RationalSEO 是一款專為現代網站設計的技術 SEO 外掛,提供全面的 SEO 需求,並避免資料庫膨脹、介面混亂及性能拖慢。它專注於直接影響搜尋引擎的功能,確保網站的最佳化。

【主要功能】
• 自訂標題標籤與描述
• Open Graph 和 Twitter Cards 支援
• JSON-LD 結構化數據輸出
• XML 網站地圖生成
• 編輯器整合與即時指標
• 可選的 AI 助手功能

外掛標籤

開發者團隊

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

① 下載 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/meta-tag-manager/"><img decoding="async" src="https://ps.w.org/meta-tag-manager/assets/icon-256x256.png?rev=1419077" alt="Meta Tag Manager" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Meta Tag Manager</strong><span class="mxp-p-related-desc">Meta Tag Manager 3.0 在 2.0 的巨大成功基礎上進一步發揮了...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wpsso/"><img decoding="async" src="https://ps.w.org/wpsso/assets/icon-256x256.png?rev=3167695" alt="WPSSO Core – Complete Schema Markup and Meta Tags" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>WPSSO Core – Complete Schema Markup and Meta Tags</strong><span class="mxp-p-related-desc">WPSSO Core 是一款完整的 Schema 標記和元標籤外掛,旨在提升...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/auto-refresh-single-page/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/auto-refresh-single-page.svg" alt="Auto Refresh Single Page" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Auto Refresh Single Page</strong><span class="mxp-p-related-desc">這個外掛會新增一個小方塊,讓你可以選擇是否要讓該頁面在指...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/meta-keywords-for-each-page/"><img decoding="async" src="https://ps.w.org/meta-keywords-for-each-page/assets/Icon-256x256.png?rev=3218214" alt="Meta Keywords for Each Page" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Meta Keywords for Each Page</strong><span class="mxp-p-related-desc">總結:這款WordPress外掛程式讓您輕鬆加入Meta Keywords以增...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wordpress-meta-description/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/wordpress-meta-description.svg" alt="WordPress Meta Description" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>WordPress Meta Description</strong><span class="mxp-p-related-desc">這個外掛可以讓你使用文章或頁面的摘要當作 meta 描述。現在...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wordpress-meta-keywords/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/wordpress-meta-keywords.svg" alt="WordPress Meta Keywords" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>WordPress Meta Keywords</strong><span class="mxp-p-related-desc">這個外掛可以讓你使用標籤作為 meta keywords。 在 頁面 下,...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/simple-meta-tags/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/simple-meta-tags.svg" alt="Simple Meta Tags" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Simple Meta Tags</strong><span class="mxp-p-related-desc">此外掛允許您設置全域的 meta 標籤,並可以針對每個頁面或文...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/basic-seo-pack/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/basic-seo-pack_eeeeee.svg" alt="Basic SEO Pack" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Basic SEO Pack</strong><span class="mxp-p-related-desc">這是一個簡單卻完整的 SEO 外掛,可以讓您的網站更友善地被搜...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/auto-seo/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/auto-seo.svg" alt="Auto SEO" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Auto SEO</strong><span class="mxp-p-related-desc">Auto SEO 是一個簡單的方法,可以從單一介面中添加所有 SEO ...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/seos/"><img decoding="async" src="https://ps.w.org/seos/assets/icon-128x128.png?rev=1536442" alt="SEOS" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>SEOS</strong><span class="mxp-p-related-desc"> SEO 選項 在 WordPress 儀表板上顯示註釋。 使用快捷代碼顯...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/seo-meta-tags/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/seo-meta-tags_f3e1d0.svg" alt="Seo Meta Tags" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Seo Meta Tags</strong><span class="mxp-p-related-desc">提升你的 WordPress SEO: 全面的 SEO 功能,包括 Meta Tags、...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/acknowledgify/"><img decoding="async" src="https://ps.w.org/acknowledgify/assets/icon-256x256.png?rev=3259466" alt="Acknowledgify" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Acknowledgify</strong><span class="mxp-p-related-desc">Acknowledgify 是一款輕量且靈活的外掛,讓開發者、自由工作...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/opengraph-xyz/"><img decoding="async" src="https://ps.w.org/opengraph-xyz/assets/icon.svg?rev=3316233" alt="AI Open Graph Image Generator – OpenGraph.xyz" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>AI Open Graph Image Generator – OpenGraph.xyz</strong><span class="mxp-p-related-desc">AI Open Graph Image Generator - OpenGraph.xyz 外掛利用 AI...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/wpsso-rest-api/"><img decoding="async" src="https://ps.w.org/wpsso-rest-api/assets/icon-256x256.png?rev=3167716" alt="WPSSO REST API" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>WPSSO REST API</strong><span class="mxp-p-related-desc">WPSSO REST API 擴展了 WordPress 的 REST API,提供格式化的...</span></span></a><a class="mxp-p-related-item" href="https://www.mxp.tw/plugins/simple-seo-pack/"><img decoding="async" src="https://s.w.org/plugins/geopattern-icon/simple-seo-pack.svg" alt="Simple SEO Pack" width="48" height="48" loading="lazy"/><span class="mxp-p-related-info"><strong>Simple SEO Pack</strong><span class="mxp-p-related-desc">使用「Simple SEO」外掛,您可以使用標準的 WordPress metabo...</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="[]" 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-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":"RationalSEO 是一款專為現代網站設計的技術 SEO 外掛,提供全面的 SEO 需求,並避免資料庫膨脹、介面混亂及性能拖慢。它專注於直接影響搜尋引擎的功能,確保網站的...","datePublished":"2026-08-31T18:31:01+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":"RationalSEO 是一款專為現代網站設計的技術 SEO 外掛,提供全面的 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.1","downloadUrl":"https://downloads.wordpress.org/plugin/rationalseo.1.1.1.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":"72ab6cc3b2","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>