<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>站点建设 on heyaohua's Blog</title><link>https://blog.heyaohua.com/categories/%E7%AB%99%E7%82%B9%E5%BB%BA%E8%AE%BE/</link><description>Recent content in 站点建设 on heyaohua's Blog</description><image><title>heyaohua's Blog</title><url>https://blog.heyaohua.com/og-image.png</url><link>https://blog.heyaohua.com/og-image.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 08 Sep 2025 12:00:00 +0800</lastBuildDate><atom:link href="https://blog.heyaohua.com/categories/%E7%AB%99%E7%82%B9%E5%BB%BA%E8%AE%BE/index.xml" rel="self" type="application/rss+xml"/><item><title>WordPress 双语网站搭建指南</title><link>https://blog.heyaohua.com/posts/2025/09/wordpress-multilingual-setup/</link><pubDate>Mon, 08 Sep 2025 12:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2025/09/wordpress-multilingual-setup/</guid><description>基于您的需求，我推荐使用 Polylang，理由： - 免费且功能强大 - 支持中英文双语 - 兼容性好 - 社区活跃</description><content:encoded><![CDATA[<h2 id="-多语言方案对比">🌍 多语言方案对比</h2>
<h3 id="1-wpml-wordpress-multilingual-plugin---付费功能最强">1. WPML (WordPress Multilingual Plugin) - 付费，功能最强</h3>
<ul>
<li><strong>优点</strong>：功能完整，兼容性好，支持所有主题和插件</li>
<li><strong>缺点</strong>：需要付费（$39+/年）</li>
<li><strong>适合</strong>：商业网站，预算充足</li>
</ul>
<h3 id="2-polylang---免费推荐">2. Polylang - 免费，推荐</h3>
<ul>
<li><strong>优点</strong>：免费，轻量，易用，兼容性好</li>
<li><strong>缺点</strong>：高级功能需要付费</li>
<li><strong>适合</strong>：个人网站，中小型项目</li>
</ul>
<h3 id="3-qtranslate-xt---免费">3. qTranslate-XT - 免费</h3>
<ul>
<li><strong>优点</strong>：完全免费，简单易用</li>
<li><strong>缺点</strong>：兼容性一般，更新不频繁</li>
<li><strong>适合</strong>：简单的双语需求</li>
</ul>
<h3 id="4-weglot---付费自动翻译">4. Weglot - 付费，自动翻译</h3>
<ul>
<li><strong>优点</strong>：自动翻译，无需手工维护</li>
<li><strong>缺点</strong>：需要付费，翻译质量一般</li>
<li><strong>适合</strong>：快速上线需求</li>
</ul>
<h2 id="-推荐方案polylang--手动配置">🚀 推荐方案：Polylang + 手动配置</h2>
<p>基于您的需求，我推荐使用 <strong>Polylang</strong>，理由：</p>
<ul>
<li>免费且功能强大</li>
<li>支持中英文双语</li>
<li>兼容性好</li>
<li>社区活跃</li>
</ul>
<h2 id="-安装和配置步骤">📋 安装和配置步骤</h2>
<h3 id="步骤1安装polylang插件">步骤1：安装Polylang插件</h3>
<h4 id="方法a通过wordpress后台安装推荐">方法A：通过WordPress后台安装（推荐）</h4>
<ol>
<li>登录WordPress后台：http://localhost:8080/wp-admin</li>
<li>进入 <code>插件</code> → <code>安装插件</code></li>
<li>搜索 &ldquo;Polylang&rdquo;</li>
<li>安装并激活</li>
</ol>
<h4 id="方法b手动下载安装">方法B：手动下载安装</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 下载Polylang插件</span>
</span></span><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">cd</span> /Users/heyaohua/Server/WordPress_Docker
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> wordpress_app bash -c <span style="color:#f1fa8c">&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">cd /var/www/html/wp-content/plugins &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">wget https://downloads.wordpress.org/plugin/polylang.latest-stable.zip &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">unzip polylang.latest-stable.zip &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">rm polylang.latest-stable.zip
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">&#34;</span>
</span></span></code></pre></div><h3 id="步骤2配置语言">步骤2：配置语言</h3>
<ol>
<li>激活插件后，进入 <code>设置</code> → <code>语言</code></li>
<li>添加语言：</li>
<li><strong>中文</strong>：中文 (zh_CN)</li>
<li><strong>英文</strong>：English (en_US)</li>
<li>设置默认语言（推荐中文）</li>
<li>选择URL结构：</li>
<li><strong>子目录</strong>：<code>yoursite.com/zh/</code> 和 <code>yoursite.com/en/</code>（推荐）</li>
<li><strong>子域名</strong>：<code>zh.yoursite.com</code> 和 <code>en.yoursite.com</code></li>
<li><strong>参数</strong>：<code>yoursite.com/?lang=zh</code></li>
</ol>
<h3 id="步骤3配置菜单和小工具">步骤3：配置菜单和小工具</h3>
<ol>
<li><strong>创建菜单</strong>：</li>
<li>进入 <code>外观</code> → <code>菜单</code></li>
<li>为每种语言创建单独的菜单</li>
<li></li>
</ol>
<p>在菜单页面右上角选择语言</p>
<ol start="5">
<li></li>
</ol>
<p><strong>配置小工具</strong>：</p>
<ol start="6">
<li>进入 <code>外观</code> → <code>小工具</code></li>
<li>为不同语言配置不同的小工具</li>
</ol>
<h3 id="步骤4创建双语内容">步骤4：创建双语内容</h3>
<ol>
<li><strong>页面/文章</strong>：</li>
<li>创建内容时选择语言</li>
<li>使用&quot;+&ldquo;按钮创建其他语言版本</li>
<li></li>
</ol>
<p>建立页面/文章之间的翻译关系</p>
<ol start="5">
<li></li>
</ol>
<p><strong>分类和标签</strong>：</p>
<ol start="6">
<li>在分类/标签页面为每个分类创建翻译版本</li>
</ol>
<h2 id="-主题优化">🎨 主题优化</h2>
<h3 id="支持多语言的主题推荐">支持多语言的主题推荐</h3>
<ol>
<li><strong>Astra</strong>（免费 + 付费）</li>
<li><strong>OceanWP</strong>（免费 + 付费）</li>
<li><strong>GeneratePress</strong>（免费 + 付费）</li>
<li><strong>Twenty Twenty-Four</strong>（WordPress默认主题）</li>
</ol>
<h3 id="主题配置">主题配置</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span>// 在主题的functions.php中添加语言切换器
</span></span><span style="display:flex;"><span>function add_language_switcher() {
</span></span><span style="display:flex;"><span>    if (function_exists(&#39;pll_the_languages&#39;)) {
</span></span><span style="display:flex;"><span>        echo &#39;<span style="color:#ff79c6">&lt;div</span> <span style="color:#50fa7b">class=</span><span style="color:#f1fa8c">&#34;language-switcher&#34;</span><span style="color:#ff79c6">&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>        pll_the_languages(array(
</span></span><span style="display:flex;"><span>            &#39;show_flags&#39; =&gt; 1,
</span></span><span style="display:flex;"><span>            &#39;show_names&#39; =&gt; 1,
</span></span><span style="display:flex;"><span>            &#39;display_names_as&#39; =&gt; &#39;name&#39;
</span></span><span style="display:flex;"><span>        ));
</span></span><span style="display:flex;"><span>        echo &#39;<span style="color:#ff79c6">&lt;/div&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h2 id="-高级配置">🔧 高级配置</h2>
<h3 id="1-自定义url结构">1. 自定义URL结构</h3>
<p>在WordPress根目录的 <code>.htaccess</code> 文件中配置：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span># Polylang URL重写规则
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">&lt;IfModule</span> mod_rewrite.c<span style="color:#ff79c6">&gt;</span>
</span></span><span style="display:flex;"><span>RewriteEngine On
</span></span><span style="display:flex;"><span>RewriteBase /
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 中文页面
</span></span><span style="display:flex;"><span>RewriteRule ^zh/(.*)$ /index.php?lang=zh&amp;$1 [QSA,L]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span># 英文页面
</span></span><span style="display:flex;"><span>RewriteRule ^en/(.*)$ /index.php?lang=en&amp;$1 [QSA,L]
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">&lt;/IfModule&gt;</span>
</span></span></code></pre></div><h3 id="2-语言检测和重定向">2. 语言检测和重定向</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#6272a4">// 在functions.php中添加自动语言检测
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">function</span> <span style="color:#50fa7b">auto_language_redirect</span>() {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">if</span> (<span style="color:#ff79c6">!</span>is_admin() <span style="color:#ff79c6">&amp;&amp;</span> function_exists(<span style="color:#f1fa8c">&#39;pll_current_language&#39;</span>)) {
</span></span><span style="display:flex;"><span>        <span style="color:#8be9fd;font-style:italic">$current_lang</span> <span style="color:#ff79c6">=</span> pll_current_language();
</span></span><span style="display:flex;"><span>        <span style="color:#8be9fd;font-style:italic">$browser_lang</span> <span style="color:#ff79c6">=</span> substr(<span style="color:#8be9fd;font-style:italic">$_SERVER</span>[<span style="color:#f1fa8c">&#39;HTTP_ACCEPT_LANGUAGE&#39;</span>], <span style="color:#bd93f9">0</span>, <span style="color:#bd93f9">2</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#ff79c6">if</span> (<span style="color:#ff79c6">empty</span>(<span style="color:#8be9fd;font-style:italic">$current_lang</span>) <span style="color:#ff79c6">&amp;&amp;</span> <span style="color:#8be9fd;font-style:italic">$browser_lang</span> <span style="color:#ff79c6">==</span> <span style="color:#f1fa8c">&#39;en&#39;</span>) {
</span></span><span style="display:flex;"><span>            wp_redirect(home_url(<span style="color:#f1fa8c">&#39;/en/&#39;</span>));
</span></span><span style="display:flex;"><span>            <span style="color:#ff79c6">exit</span>;
</span></span><span style="display:flex;"><span>        } <span style="color:#ff79c6">elseif</span> (<span style="color:#ff79c6">empty</span>(<span style="color:#8be9fd;font-style:italic">$current_lang</span>)) {
</span></span><span style="display:flex;"><span>            wp_redirect(home_url(<span style="color:#f1fa8c">&#39;/zh/&#39;</span>));
</span></span><span style="display:flex;"><span>            <span style="color:#ff79c6">exit</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>add_action(<span style="color:#f1fa8c">&#39;template_redirect&#39;</span>, <span style="color:#f1fa8c">&#39;auto_language_redirect&#39;</span>);
</span></span></code></pre></div><h3 id="3-seo优化">3. SEO优化</h3>
<p>安装Yoast SEO插件，与Polylang完全兼容：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># 安装Yoast SEO</span>
</span></span><span style="display:flex;"><span>docker <span style="color:#8be9fd;font-style:italic">exec</span> wordpress_app bash -c <span style="color:#f1fa8c">&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">cd /var/www/html/wp-content/plugins &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">wget https://downloads.wordpress.org/plugin/wordpress-seo.latest-stable.zip &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">unzip wordpress-seo.latest-stable.zip &amp;&amp;
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">rm wordpress-seo.latest-stable.zip
</span></span></span><span style="display:flex;"><span><span style="color:#f1fa8c">&#34;</span>
</span></span></code></pre></div><h2 id="-双语网站结构示例">🌐 双语网站结构示例</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>网站首页
</span></span><span style="display:flex;"><span>├── 中文版 (yoursite.com/zh/)
</span></span><span style="display:flex;"><span>│   ├── 关于我们 (/zh/about/)
</span></span><span style="display:flex;"><span>│   ├── 产品服务 (/zh/services/)
</span></span><span style="display:flex;"><span>│   ├── 新闻动态 (/zh/news/)
</span></span><span style="display:flex;"><span>│   └── 联系我们 (/zh/contact/)
</span></span><span style="display:flex;"><span>├── 英文版 (yoursite.com/en/)
</span></span><span style="display:flex;"><span>│   ├── About Us (/en/about/)
</span></span><span style="display:flex;"><span>│   ├── Services (/en/services/)
</span></span><span style="display:flex;"><span>│   ├── News (/en/news/)
</span></span><span style="display:flex;"><span>│   └── Contact (/en/contact/)
</span></span><span style="display:flex;"><span>└── 语言切换器（全站可见）
</span></span></code></pre></div><h2 id="-移动端优化">📱 移动端优化</h2>
<ol>
<li><strong>响应式设计</strong>：确保语言切换器在移动端正常显示</li>
<li><strong>性能优化</strong>：使用缓存插件（WP Rocket, W3 Total Cache）</li>
<li><strong>图片优化</strong>：使用WebP格式，配置CDN</li>
</ol>
<h2 id="-安全考虑">🔒 安全考虑</h2>
<ol>
<li><strong>备份策略</strong>：多语言网站数据更复杂，定期备份</li>
<li><strong>插件更新</strong>：及时更新Polylang和相关插件</li>
<li><strong>权限管理</strong>：为不同语言版本设置合适的编辑权限</li>
</ol>
<h2 id="-常用代码片段">📊 常用代码片段</h2>
<h3 id="获取当前语言">获取当前语言</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">$current_language</span> <span style="color:#ff79c6">=</span> pll_current_language();
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">echo</span> <span style="color:#8be9fd;font-style:italic">$current_language</span>; <span style="color:#6272a4">// 输出: zh 或 en
</span></span></span></code></pre></div><h3 id="获取页面翻译">获取页面翻译</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#8be9fd;font-style:italic">$translations</span> <span style="color:#ff79c6">=</span> pll_get_post_translations(<span style="color:#8be9fd;font-style:italic">$post_id</span>);
</span></span><span style="display:flex;"><span><span style="color:#ff79c6">foreach</span> (<span style="color:#8be9fd;font-style:italic">$translations</span> <span style="color:#ff79c6">as</span> <span style="color:#8be9fd;font-style:italic">$lang</span> <span style="color:#ff79c6">=&gt;</span> <span style="color:#8be9fd;font-style:italic">$post_id</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">echo</span> pll_get_post(<span style="color:#8be9fd;font-style:italic">$post_id</span>, <span style="color:#8be9fd;font-style:italic">$lang</span>);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h3 id="条件显示内容">条件显示内容</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>if (pll_current_language() == &#39;zh&#39;) {
</span></span><span style="display:flex;"><span>    echo &#39;中文内容&#39;;
</span></span><span style="display:flex;"><span>} elseif (pll_current_language() == &#39;en&#39;) {
</span></span><span style="display:flex;"><span>    echo &#39;English Content&#39;;
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h3 id="语言切换菜单">语言切换菜单</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>// 显示旗帜和语言名称
</span></span><span style="display:flex;"><span>pll_the_languages(array(
</span></span><span style="display:flex;"><span>    &#39;show_flags&#39; =&gt; 1,
</span></span><span style="display:flex;"><span>    &#39;show_names&#39; =&gt; 1,
</span></span><span style="display:flex;"><span>    &#39;hide_current&#39; =&gt; 1
</span></span><span style="display:flex;"><span>));
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>// 仅显示旗帜
</span></span><span style="display:flex;"><span>pll_the_languages(array(
</span></span><span style="display:flex;"><span>    &#39;show_flags&#39; =&gt; 1,
</span></span><span style="display:flex;"><span>    &#39;show_names&#39; =&gt; 0
</span></span><span style="display:flex;"><span>));
</span></span></code></pre></div><h2 id="-问题排查">🛠️ 问题排查</h2>
<h3 id="常见问题">常见问题</h3>
<ol>
<li><strong>URL不正确</strong>：检查固定链接设置</li>
<li><strong>翻译丢失</strong>：重新建立翻译关联</li>
<li><strong>SEO问题</strong>：配置hreflang标签</li>
<li><strong>性能问题</strong>：使用缓存插件</li>
</ol>
<h3 id="调试代码">调试代码</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span>// 调试当前语言信息
</span></span><span style="display:flex;"><span>function debug_polylang_info() {
</span></span><span style="display:flex;"><span>    if (function_exists(&#39;pll_current_language&#39;)) {
</span></span><span style="display:flex;"><span>        echo &#39;<span style="color:#ff79c6">&lt;div</span> <span style="color:#50fa7b">style=</span><span style="color:#f1fa8c">&#34;position:fixed;top:0;right:0;background:red;color:white;padding:10px;&#34;</span><span style="color:#ff79c6">&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>        echo &#39;当前语言: &#39; . pll_current_language() . &#39;<span style="color:#ff79c6">&lt;br&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>        echo &#39;默认语言: &#39; . pll_default_language() . &#39;<span style="color:#ff79c6">&lt;br&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>        echo &#39;所有语言: &#39; . implode(&#39;, &#39;, pll_languages_list()) . &#39;<span style="color:#ff79c6">&lt;br&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>        echo &#39;<span style="color:#ff79c6">&lt;/div&gt;</span>&#39;;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>add_action(&#39;wp_footer&#39;, &#39;debug_polylang_info&#39;);
</span></span></code></pre></div><h2 id="-内容管理策略">📈 内容管理策略</h2>
<h3 id="1-翻译工作流程">1. 翻译工作流程</h3>
<ol>
<li><strong>创建中文内容</strong>（主语言）</li>
<li><strong>创建英文翻译页面</strong></li>
<li><strong>建立翻译关联</strong></li>
<li><strong>检查链接和菜单</strong></li>
<li><strong>SEO优化</strong></li>
</ol>
<h3 id="2-内容同步">2. 内容同步</h3>
<ul>
<li>使用翻译管理插件</li>
<li>建立内容更新检查清单</li>
<li>定期审核双语内容一致性</li>
</ul>
<h3 id="3-团队协作">3. 团队协作</h3>
<ul>
<li>为翻译人员创建单独账户</li>
<li>设置语言特定的编辑权限</li>
<li>使用协作插件管理翻译进度</li>
</ul>
<hr>
<p>💡 <strong>下一步建议</strong>：</p>
<ol>
<li>先登录WordPress后台安装Polylang插件</li>
<li>按照上述步骤配置中英文双语</li>
<li>创建测试页面验证功能</li>
<li>根据需要调整主题和样式</li>
</ol>
]]></content:encoded></item><item><title>WordPress 专业双语网站解决方案</title><link>https://blog.heyaohua.com/posts/2025/09/wordpress-multilingual-solution/</link><pubDate>Mon, 08 Sep 2025 11:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2025/09/wordpress-multilingual-solution/</guid><description>基于您已经安装了Polylang，这里是完整的专业配置步骤：</description><content:encoded><![CDATA[<h2 id="-业界成熟方案对比">🌍 业界成熟方案对比</h2>
<h3 id="1-wpml-wordpress-multilingual-plugin-">1. <strong>WPML (WordPress Multilingual Plugin)</strong> ⭐⭐⭐⭐⭐</h3>
<ul>
<li><strong>类型</strong>：付费插件（$39-$159/年）</li>
<li><strong>优点</strong>：</li>
<li>最完整的多语言解决方案</li>
<li>支持自动翻译和人工翻译</li>
<li>完美的URL结构（/en/, /cn/）</li>
<li>支持WooCommerce等插件</li>
<li>专业的翻译管理界面</li>
<li><strong>缺点</strong>：</li>
<li>需要付费</li>
<li>功能较多，初学者可能觉得复杂</li>
</ul>
<h3 id="2-polylang-">2. <strong>Polylang</strong> ⭐⭐⭐⭐</h3>
<ul>
<li><strong>类型</strong>：免费版 + Pro版</li>
<li><strong>优点</strong>：</li>
<li>免费版功能已经很强大</li>
<li>简单易用</li>
<li>支持自定义URL结构</li>
<li>与大多数主题兼容</li>
<li><strong>缺点</strong>：</li>
<li>某些高级功能需要Pro版</li>
<li>需要手动配置较多</li>
</ul>
<h3 id="3-translatepress-">3. <strong>TranslatePress</strong> ⭐⭐⭐⭐</h3>
<ul>
<li><strong>类型</strong>：免费版 + 付费版</li>
<li><strong>优点</strong>：</li>
<li>可视化翻译界面</li>
<li>前端实时翻译</li>
<li>支持自动翻译（付费）</li>
<li>SEO友好</li>
<li><strong>缺点</strong>：</li>
<li>免费版功能有限</li>
<li>可能影响网站性能</li>
</ul>
<h3 id="4-weglot-">4. <strong>Weglot</strong> ⭐⭐⭐</h3>
<ul>
<li><strong>类型</strong>：付费服务（基于使用量）</li>
<li><strong>优点</strong>：</li>
<li>自动翻译</li>
<li>云端管理</li>
<li>快速部署</li>
<li><strong>缺点</strong>：</li>
<li>持续付费</li>
<li>依赖第三方服务</li>
</ul>
<h2 id="-推荐的专业实施方案">🎯 推荐的专业实施方案</h2>
<p>基于您已经安装了Polylang，这里是完整的专业配置步骤：</p>
<h3 id="步骤1正确配置polylang">步骤1：正确配置Polylang</h3>
<ol>
<li></li>
</ol>
<p><strong>进入WordPress后台 → 语言 → 设置</strong></p>
<ol start="2">
<li></li>
</ol>
<p><strong>URL修改设置</strong>：</p>
<ol start="3">
<li>选择：<code>The language is set from the directory name in pretty permalinks</code></li>
<li></li>
</ol>
<p>这会生成 <code>/en/</code> 和 <code>/cn/</code> 的URL结构</p>
<ol start="5">
<li></li>
</ol>
<p><strong>语言设置</strong>：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>英语：
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>6. 语言代码：en
</span></span><span style="display:flex;"><span>7. 区域设置：en_US
</span></span><span style="display:flex;"><span>8. 语言顺序：1
</span></span><span style="display:flex;"><span>9. URL中的语言：en（或留空作为默认）
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>中文：
</span></span><span style="display:flex;"><span>- 语言代码：zh
</span></span><span style="display:flex;"><span>- 区域设置：zh_CN
</span></span><span style="display:flex;"><span>- 语言顺序：2
</span></span><span style="display:flex;"><span>- URL中的语言：cn
</span></span></code></pre></div><ol>
<li><strong>检测浏览器语言</strong>：</li>
<li>勾选&quot;检测浏览器语言&quot;</li>
<li>设置默认语言重定向</li>
</ol>
<h3 id="步骤2内容管理最佳实践">步骤2：内容管理最佳实践</h3>
<ol>
<li><strong>创建内容时</strong>：</li>
<li>先创建一种语言的内容</li>
<li>使用Polylang的&quot;+&ldquo;按钮创建翻译版本</li>
<li></li>
</ol>
<p>保持URL slug的一致性</p>
<ol start="5">
<li></li>
</ol>
<p><strong>菜单管理</strong>：</p>
<ol start="6">
<li>为每种语言创建独立菜单</li>
<li></li>
</ol>
<p>在&quot;外观 → 菜单&quot;中切换语言编辑</p>
<ol start="8">
<li></li>
</ol>
<p><strong>小工具管理</strong>：</p>
<ol start="9">
<li>使用Polylang的语言特定小工具</li>
<li>或使用条件显示插件</li>
</ol>
<h3 id="步骤3主题兼容性处理">步骤3：主题兼容性处理</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#6272a4">// 在主题的 functions.php 中添加
</span></span></span><span style="display:flex;"><span><span style="color:#6272a4">// 确保主题完全兼容Polylang
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4">// 1. 注册可翻译的字符串
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> (function_exists(<span style="color:#f1fa8c">&#39;pll_register_string&#39;</span>)) {
</span></span><span style="display:flex;"><span>    pll_register_string(<span style="color:#f1fa8c">&#39;theme_read_more&#39;</span>, <span style="color:#f1fa8c">&#39;Read More&#39;</span>, <span style="color:#f1fa8c">&#39;Theme&#39;</span>);
</span></span><span style="display:flex;"><span>    pll_register_string(<span style="color:#f1fa8c">&#39;theme_search&#39;</span>, <span style="color:#f1fa8c">&#39;Search&#39;</span>, <span style="color:#f1fa8c">&#39;Theme&#39;</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4">// 2. 在主题中使用翻译
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">if</span> (function_exists(<span style="color:#f1fa8c">&#39;pll__&#39;</span>)) {
</span></span><span style="display:flex;"><span>    <span style="color:#8be9fd;font-style:italic">$read_more_text</span> <span style="color:#ff79c6">=</span> pll__(<span style="color:#f1fa8c">&#39;Read More&#39;</span>);
</span></span><span style="display:flex;"><span>} <span style="color:#ff79c6">else</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#8be9fd;font-style:italic">$read_more_text</span> <span style="color:#ff79c6">=</span> __(<span style="color:#f1fa8c">&#39;Read More&#39;</span>, <span style="color:#f1fa8c">&#39;textdomain&#39;</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#6272a4">// 3. 自定义语言切换器样式
</span></span></span><span style="display:flex;"><span><span style="color:#ff79c6">function</span> <span style="color:#50fa7b">custom_language_switcher</span>() {
</span></span><span style="display:flex;"><span>    <span style="color:#ff79c6">if</span> (function_exists(<span style="color:#f1fa8c">&#39;pll_the_languages&#39;</span>)) {
</span></span><span style="display:flex;"><span>        <span style="color:#ff79c6">echo</span> <span style="color:#f1fa8c">&#39;&lt;ul class=&#34;language-switcher&#34;&gt;&#39;</span>;
</span></span><span style="display:flex;"><span>        pll_the_languages(<span style="color:#ff79c6">array</span>(
</span></span><span style="display:flex;"><span>            <span style="color:#f1fa8c">&#39;show_flags&#39;</span> <span style="color:#ff79c6">=&gt;</span> <span style="color:#bd93f9">1</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#f1fa8c">&#39;show_names&#39;</span> <span style="color:#ff79c6">=&gt;</span> <span style="color:#bd93f9">1</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#f1fa8c">&#39;dropdown&#39;</span> <span style="color:#ff79c6">=&gt;</span> <span style="color:#bd93f9">0</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#f1fa8c">&#39;hide_current&#39;</span> <span style="color:#ff79c6">=&gt;</span> <span style="color:#bd93f9">0</span>
</span></span><span style="display:flex;"><span>        ));
</span></span><span style="display:flex;"><span>        <span style="color:#ff79c6">echo</span> <span style="color:#f1fa8c">&#39;&lt;/ul&gt;&#39;</span>;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h3 id="步骤4seo优化">步骤4：SEO优化</h3>
<ol>
<li><strong>安装Yoast SEO + Polylang集成</strong></li>
<li><strong>设置hreflang标签</strong>（Polylang自动处理）</li>
<li><strong>为每种语言优化元数据</strong></li>
</ol>
<h3 id="步骤5性能优化">步骤5：性能优化</h3>
<ol>
<li><strong>使用缓存插件</strong>（如WP Rocket）</li>
<li><strong>配置CDN支持多语言</strong></li>
<li><strong>优化数据库查询</strong></li>
</ol>
<h2 id="-一键部署方案">🚀 一键部署方案</h2>
<p>如果您想要更简单的方案，可以考虑：</p>
<ol>
<li><strong>使用多语言主题</strong>：</li>
<li>WPML Ready主题</li>
<li></li>
</ol>
<p>Polylang兼容主题</p>
<ol start="4">
<li></li>
</ol>
<p><strong>使用托管服务</strong>：</p>
<ol start="5">
<li>WordPress.com商业版（内置多语言）</li>
<li></li>
</ol>
<p>Kinsta等专业托管（预配置多语言）</p>
<ol start="7">
<li></li>
</ol>
<p><strong>使用现成的多语言模板</strong>：</p>
<ol start="8">
<li>ThemeForest上的多语言主题</li>
<li>预配置好的Docker镜像</li>
</ol>
<h2 id="-为什么会改来改去">💡 为什么会&quot;改来改去&rdquo;？</h2>
<p>您遇到的问题主要是因为：</p>
<ol>
<li><strong>没有遵循插件的标准用法</strong>：每个插件都有自己的工作方式</li>
<li><strong>混合了不同的实现方法</strong>：手动代码和插件功能冲突</li>
<li><strong>URL结构不一致</strong>：需要从一开始就规划好</li>
<li><strong>没有使用插件提供的API</strong>：直接修改可能破坏功能</li>
</ol>
<h2 id="-建议的清理和重新配置">✅ 建议的清理和重新配置</h2>
<ol>
<li><strong>备份当前网站</strong></li>
<li><strong>清理所有自定义的多语言代码</strong></li>
<li><strong>完全依赖Polylang的功能</strong></li>
<li><strong>按照官方文档配置</strong></li>
<li><strong>只在必要时添加兼容性代码</strong></li>
</ol>
<h2 id="-官方资源">📚 官方资源</h2>
<ul>
<li><a href="https://polylang.pro/doc/">Polylang官方文档</a></li>
<li><a href="https://wpml.org/documentation/">WPML官方指南</a></li>
<li><a href="https://developer.wordpress.org/plugins/internationalization/">WordPress多语言最佳实践</a></li>
</ul>
<h2 id="-最终建议">🎯 最终建议</h2>
<p>如果您需要一个<strong>稳定、专业、不需要经常修改</strong>的解决方案：</p>
<ol>
<li><strong>小型网站</strong>：使用Polylang免费版，严格按照官方文档配置</li>
<li><strong>商业网站</strong>：投资WPML，获得完整的技术支持</li>
<li><strong>企业网站</strong>：考虑使用WordPress Multisite，每种语言一个子站</li>
</ol>
<p>记住：<strong>不要重新发明轮子</strong>，使用成熟的解决方案并遵循最佳实践！</p>
]]></content:encoded></item><item><title>数学公式示例</title><link>https://blog.heyaohua.com/posts/2024/01/math-example/</link><pubDate>Mon, 15 Jan 2024 15:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2024/01/math-example/</guid><description>本文示范如何在 Pelican 博客中优雅呈现常见数学公式，帮助撰写技术或科研类文章时保持专业排版。示例基于 LaTeX 语法，并依赖 插件完成渲染。</description><content:encoded><![CDATA[<p>本文示范如何在 Pelican 博客中优雅呈现常见数学公式，帮助撰写技术或科研类文章时保持专业排版。示例基于 LaTeX 语法，并依赖 <code>render_math</code> 插件完成渲染。</p>
<h2 id="行内公式">行内公式</h2>
<p>当公式只需要嵌入在段落中时，可使用单个美元符号包裹表达式，例如 $E = mc^2$。这是著名的质能方程，适合在正文中快速引用。</p>
<h2 id="块级公式">块级公式</h2>
<p>对于需要突出显示的公式，可使用双美元符号放在独立段落中：</p>
<h3 id="一元二次方程求根">一元二次方程求根</h3>
<p>$$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$</p>
<h3 id="欧拉恒等式">欧拉恒等式</h3>
<p>$$e^{i\pi} + 1 = 0$$</p>
<h3 id="高斯积分">高斯积分</h3>
<p>$$\int_{-\infty}^{\infty} e^{-x^2} , dx = \sqrt{\pi}$$</p>
<h2 id="矩阵乘法">矩阵乘法</h2>
<p>线性代数场景中，矩阵语法有助于展示多维运算：</p>
<h1 id="endpmatrix">$$
\begin{pmatrix}
a &amp; b <br>
c &amp; d
\end{pmatrix}
\begin{pmatrix}
x <br>
y
\end{pmatrix}</h1>
<p>\begin{pmatrix}
ax + by <br>
cx + dy
\end{pmatrix}
$$</p>
<h2 id="求和公式">求和公式</h2>
<p>常见求和表达式也能通过 LaTeX 清晰呈现：</p>
<p>$$\sum_{i=1}^{n} i = \frac{n(n+1)}{2}$$</p>
<hr>
<blockquote>
<p>提示：撰写公式类文章时，务必确认 <code>pelicanconf.py</code> 中已启用 <code>render_math</code> 插件，并保持 LaTeX 语法正确，以确保静态页面渲染正常。</p>
</blockquote>
]]></content:encoded></item><item><title>欢迎来到我的博客</title><link>https://blog.heyaohua.com/posts/2024/01/hello-world/</link><pubDate>Mon, 15 Jan 2024 10:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2024/01/hello-world/</guid><description>基于Pelican搭建的个人技术博客，分享Python、数据工程、云原生等技术文章，记录项目实战与学习笔记。欢迎技术同好交流与成长。</description><content:encoded><![CDATA[<p>很高兴在这里与大家见面。这是我基于 Pelican 静态站点生成器搭建的个人技术博客，未来将持续更新开发经验、工程实践与学习笔记，记录我在技术道路上的探索与思考。</p>
<h2 id="博客定位">博客定位</h2>
<ul>
<li>分享 Python、数据工程、云原生等方向的技术文章</li>
<li>记录项目复盘与实战案例，整理可复用的解决方案</li>
<li>输出读书笔记、课程总结与工具心得</li>
<li>偶尔发布职业发展与个人效率提升的感悟</li>
</ul>
<h2 id="技术栈概览">技术栈概览</h2>
<ul>
<li><strong>Pelican</strong>：静态站点生成器，负责内容构建与部署</li>
<li><strong>Markdown</strong>：文章撰写格式，方便版本管理与协作</li>
<li><strong>GitHub</strong>：代码与内容仓库，配合 CI/CD 完成持续部署</li>
<li><strong>ECS</strong>：线上运行环境，托管网站静态资源</li>
</ul>
<h2 id="内容规划">内容规划</h2>
<ol>
<li><strong>技术专栏</strong>：包含源码解析、性能优化、系统设计等专题</li>
<li><strong>工程实践</strong>：记录在企业项目中的落地经验与踩坑总结</li>
<li><strong>学习札记</strong>：对前沿技术和优秀论文的阅读体会</li>
<li><strong>工具指南</strong>：分享常用开发工具、自动化脚本与效率技巧</li>
</ol>
<h2 id="联系方式">联系方式</h2>
<p>如有合作、讨论或建议，欢迎通过以下方式联系我：</p>
<ul>
<li>GitHub：<a href="https://github.com/heyaohua">https://github.com/heyaohua</a></li>
<li>邮箱：your-email@example.invalid</li>
</ul>
<hr>
<p>感谢你的关注，期待在这里与更多技术同好交流与成长。</p>
]]></content:encoded></item></channel></rss>