↓ التخطى الى المحتوى الأساسى
  1. مقالات/

ورشة العمل الإدارية - الانتقال من ووردبريس إلى هوجو

Rubén Infante Docio
الناشر
Rubén Infante Docio
مهندس برمجيات
محتوى المقال

لسنوات كنت أفكر في هذه المدونة، وأفكر، دعونا نرى إذا كنت سأكتب تدوينة عن هذا أو ذاك، لقد مر الوقت وعندما راجعتها أدركت أنني لم أكتب أي منشور منذ 8 سنوات.

في عصر الذكاء الاصطناعي اليوم، قد لا يكون من المنطقي إدارة مدونة، لكنني أرغب في الحفاظ على مهاراتي في الكتابة والتواصل مع مشاريعي الشخصية.

تم إنشاء هذه المدونة قبل 19 عاما باسم “Mis Cosas Geek”، مستخدما مصطلح “Geek” كمصطلح مرتبط بشخص مهتم بالتكنولوجيا، لكن في السنوات الأخيرة ارتبط المصطلح بشكل متزايد بالثقافة الشعبية، وألعاب الفيديو، والقصص المصورة، والأفلام، والموسيقى الثقافية، بالإضافة إلى الخيال العلمي والفانتازيا، وهذا ليس هدف هذه المدونة، لذلك من الآن فصاعدا عشاق السيليكون سيطلق على هذا الموقع “ورشة عمل المسؤول” وسنستمر في الحديث عن الأخطاء الإلكترونية، والتطوير، وبعض المواضيع الجديدة مثل أتمتة المنزل والطباعة ثلاثية الأبعاد.

الستاك الجديد
#

هذا التغيير في الاسم لم يكن الشيء الجديد، وبسبب ذلك تم ترحيله على مستوى تقني لتوليد HTML ثابت، وأسباب هذا التغيير هي تجنب الحفاظ على قاعدة بيانات والكتابة ب Markdown، بالإضافة إلى تحسين محركات البحث والأداء وسهولة الوصول والأمان (أساسا لأنه :D HTML ثابت).

  • wp2hugo كأداة لتنفيذ الترحيل.
  • هوغو كمولد للمواقع الثابتة.
  • موضوع بلوفيش
  • إجراءات Github
  • مترجم مايكروسوفت مع مستوى مجاني (Azure F0) للترجمات إلى لغات أخرى ومليونا حرف شهريا متضمن.
  • عمال كلاودفلير
  • [بريفو](Para Newsletter)
  • اشتر لي قهوة
  • Pholo التحقق من الموقع لعشاق RSS حنينيين مثلي ولكن تم تحديثه بالذكاء الاصطناعي

اختيار مولد موقع ثابت
#

الخيار كان هوجو، وفي هذه المرحلة الجديدة أريد التركيز على الكتابة بدلا من الحفاظ على الإضافات والتحديثات وتحسين محركات البحث مع الحفاظ على أفضل أداء ممكن. يجلب هوجو المزايا التالية مقارنة بتقنيات مشابهة مثل Astro أو Jekyll أو Next.js.

  • لا توجد تبعيات
  • منحنى التعلم منخفض.
  • سرعته عالية جدا.
  • إنه حديث، مقارنة قبل كل شيء بجيكل
  • البساطة

الخطوة التالية هي اختيار ثيم قوي، مصمم بشكل جيد، مع وظائف مدمجة وغير مثقل بالموضوع، بعد مقارنة عدة ثيمات موجودة تم اختيار بلوفيش .

التصدير
#

بالنسبة للترحيل، أول شيء هو استخراج المحتويات والملفات من ووردبريس القديم باستخدام إحدى المكتبات المتاحة على Github. بعد مقارنة عدة أدوات مثل wordpress-export-to-markdownوmarkdown-exporter-for-wordpress و wp2hugo، كان الأخير هو الفائز الواضح بسبب المزايا التالية:

  • اقتباس التعليقات
  • يتيح لك تحميل ليس فقط الصور والملفات المشار إليها بل أيضا جميع الملفات الموجودة في ووردبريس
  • تحويل HTML في ووردبريس بشكل صحيح عن طريق تضمين كتل الكود
  • يسمح لك بتعديل هيكل الملفات والمجلدات في المدونة الجديدة
  • يحافظ على ملفات ووردبريس وGUID

تدفق النشر
#

فيما يتعلق بالنشر، رغم أنني استخدمت في حياتي المهنية قوالب Jenkins وGitlab CI/CD وAzure Devops، إلا أنني لم أستخدم Github Actions من قبل وكانت التجربة رائعة.

ل"استضافت" الموقع، تم استخدام Cloudflare Workers يسمح بنشر مجاني حتى في المستودعات الخاصة، وطلبات غير محدودة، و20,000 ملف، و25 ميجابايت لكل ملف، وإعادة توجيه 301 حقيقية (للحفاظ على إعادة توجيه خلاصات RSS القديمة لووردبريس)، و404 صفحات لكل لغة من بين لغات أخرى.

كل شيء مشفر: .github/workflows/publish.yml (إجراء “نشر”) وCloudflare wrangler.jsonc (العامل).

كل دفعة للتحكم الرئيسي تطلق الأكشن، الذي يؤدي مهمتين متتاليتين:

1. الترجمة
#

أود أن تصل المدونة إلى عدد أكبر من الناس، ولهذا اخترت أكثر اللغات تتحدث في العالم وسيتم ترجمة المنشورات تلقائيا إليها:

  1. الإسبانية
  2. الإنجليزية
  3. الصينية الماندرين
  4. الهندية
  5. الإسبانية
  6. الفرنسية
  7. العربية
  8. البنغالية
  9. البرتغالية
  10. الروسية

للقيام بذلك، أستخدم translate.py تترجم المشاركات الجديدة أو المعدلة باستخدام Microsoft Translator مجانا وترفع الترجمات إلى المستودع. إذا لم يكن هناك شيء، ينتهي السكريبت في ثوان دون دفع أي رسوم. - إذا فشلت الترجمة أو نفدت الحصة: يتم عرضها على أي حال، لذا يتم نشر المنشور بالإسبانية على أي حال. - يمكنك استئناف الترجمات المعلقة أو إعادة النشر يدويا: إجراءات → نشر → تشغيل سير العمل. - أسرار GitHub: AZURE_TRANSLATOR_KEY، AZURE_TRANSLATOR_REGION، CLOUDFLARE_API_TOKEN (قالب “تحرير عمال Cloudflare”، المنطقة talleradmin.com) و CLOUDFLARE_ACCOUNT_ID.

2. النشر
#

البناء باستخدام Hugo (أحدث إصدار متوفر بدعم Blowfish) ونشر باستخدام wrangler.jsonc في Cloudflare Worker.

النشرة الإخبارية
#

لست متأكدا مما إذا كانت النشرات الإخبارية لا تزال حية أو تحتضر، لذا أنشأت واحدة مع [Brevo](Para Newsletter) لاختبارها. فوجئت بأن ميزة كانت تقدم مئات المواقع مجانا قبل 20 عاما لمشرفي المواقع أصبحت الآن خدمات مدفوعة محدودة للغاية. ومع ذلك، وفقا لما تمكنت من البحث عنه، يبدو أن Claude and I Brevo نقدم أفضل خطة مجانية مع أتمتة RSS.

مواضيع أخرى تمت مراجعتها ونقلها
#

  • سهولة الوصول

  • أدسنس

  • Google Search Console: نقل المدونة لأن النطاق تغير أيضا rubeninfante.com إلى talleradmin.com

  • روابط العمولة بين علي إكسبريس وأمازون

  • تحسين الصور

    sudo apt install optipng jpegoptim
    find static/wp-content -iname '_.png' -print0 | xargs -0 -P"$(nproc)" -n4 optipng -o2 -strip all -quiet
    find static/wp-content -iname '_.jp\*g' -print0 | xargs -0 jpegoptim --strip-all --all-progressive -q
  • مراجعة robots.txt

  • مراجعة لهجات في الفئات والوسوم

  • في حالتي، قمت بتنظيف الوسوم والفئات باستخدام ملف static/_redirects

  • تنظيف الملفات غير المستخدمة

  • أضفت صورا لكل صفحة وصورة عامة عندما لا يكون هناك static/img/social-default.jpg assets/img/background.jpg

  • راجع إضافات ووردبريس قبل الترحيل وقم بتعطيل جميع الإضافات ما عدا الضرورية.

  • عدل وأنشئ إعادة توجيه من rubeninfante.com إلى talleradmin.com

في العمل اليومي
#

الأوامر
#

  • أنشئ عنصرا جديدا

    hugo new posts/mi-nuevo-articulo/index.md
    • إذا تم استدعاء صورة في مجلد mi-nuevo-articulo feature.[jpg,png,webp] فسيتم استخدامها كصورة رئيسية، ورأس ووسائل التواصل الاجتماعي
  • تحقق من وجود روابط معطلة

    • أنشئ ملف lychee.toml في جذر الموقع يحتوي على المحتوى

        # lychee.toml — enlaces que no se comprueban (expresiones regulares)
        exclude = [
          "#nolychee$",   # la marca de evitar enlaces
          "https://web.archive.org/web/*",
          "reddit.com/submit",
          "facebook.com/sharer",
          "linkedin.com/shareArticle"
        ]
        exclude_path = ["^public/(en|zh-cn|hi|fr|ar|bn|pt-br|ru)/"]
    • شغل الأمر:

        hugo --gc --cleanDestinationDir
        lychee --root-dir "$PWD/public" 'public/**/*.html' --format markdown --output informe.md
    • مراجعة informe.md

      • أضف https://web.archive.org/web/إلى بداية الرابط إذا لم يعد الرابط موجودا
      • أضف #nolychee إلى نهاية الرابط أو إلى ملف lychee.toml إذا كان الكشف غير صحيح بسبب مضادات الروبوتات أو سبب آخر

لتحديث الموضوع
#

  • تحديث الموضوع

      cd themes/blowfish
      OLD=$(git rev-parse HEAD)                                  # para comparar después
      git fetch --depth 1 origin main && git checkout -B main origin/main
  • راجع الملفات التي قمت بكتابتها فوق الموضوع

      cd ../..
      for f in $(cd layouts && find . -type f); do git -C themes/blowfish diff --quiet $OLD HEAD -- "layouts/${f#./}" 2>/dev/null || echo "Revisar: layouts/${f#./}"; done

الصور
#

من المهم معرفة الطرق التي يمكن من خلالها تخزين صور المدونة:

  • assets للصور التي يستخدمها القالب ويمكنه تحسينها: الخلفية (defaultBackgroundImage)، الصورة المميزة الافتراضية (defaultFeaturedImage)، وصورة المؤلف الخاصة بك. لهذا السبب background.jpg جيد هناك: القالب يصغرها ولا يتم تقديم 3.4 ميجابايت.

  • static تحتاج إلى رابط ثابت وغير متغير: favicons، ads.txt، ملفات PDF، ملفات للتحميل أو صور تربطها من الخارج. كمثال، social-default.jpg أضعه لأن واتساب وX يطلبان رابط مستقر.

  • Imágenes de un post concreto: في مجلد المنشور نفسه (حزمة الصفحات).

  • ملاحظة في hugo.toml أعددت static أيضا كأصول. لهذا السبب يتم تحسين الصور الثابتة/الصور أيضا عندما يستخدمها القالب كغلاف. هذا حل لترحيل ووردبريس.

      [[module.mounts]]
        source = "static"
        target = "assets"

إضافة لغة
#

  • الملفات التي يجب تعديلها/إضافتها

      config/_default/languages.xx.toml
      config/_default/menus.xx.toml
      i18n/xx.toml (Sólo en el caso del que el tema no incluya el idioma)
  • تعديل /config/_default/params.toml

      newsletter.formAction]
        es = "https://..."
        xx = "https://..."