Cara Saya Memigrasikan Situs WordPress ke Lesstruct: Panduan Praktis

Migrating WordPress to Lesstruct

Sepuluh tahun lalu, pada tahun 2016, seorang teman meminta saya membuat aplikasi web dengan konsep yang menarik: siapa pun bisa mendaftar sebagai jurnalis, influencer, atau kreator konten lainnya. Admin akan meninjau dan menyetujui atau menolak setiap pendaftaran. Penulis yang disetujui kemudian dapat mengirimkan postingan atau artikel yang menjelaskan bagaimana mereka membahas produk teman saya di situs web atau media sosial mereka sendiri.

Setiap kiriman melewati langkah persetujuan lain. Setelah diterima, kiriman mendapat skor 1 hingga 3 berdasarkan kualitas konten. Sistem menggunakan skor tersebut untuk memberi peringkat penulis berdasarkan bulan, tahun, dan sepanjang masa, serta dapat mengekspor data penulis, terutama poin, ke CSV. Teman saya kemudian memberi hadiah kepada penulis dengan peringkat teratas. Singkatnya, ini adalah gamifikasi untuk penulisan artikel.

Itulah inti bisnisnya. Operasi sebenarnya memiliki lebih banyak komponen, tetapi ini menangkap alur inti dan bagaimana akhirnya saya menyelesaikannya dengan Lesstruct. Mari kita mulai.

Saya memilih WordPress dan membeli tema premium untuk mewujudkannya. Tema saja tidak cukup, dan teman saya awalnya tidak puas, jadi saya memperluasnya dengan child theme dan plugin khusus.

Berikut plugin utama yang saya gunakan:

Saya mengandalkan plugin untuk pekerjaan teknis yang berat, tetapi saya tidak akan membahas kodenya di sini, ini tentang bisnisnya.

Advanced Custom Fields

Private and Public Custom Fields for Articles and Users on WordPress ACF

Saya mengelompokkan custom field ke dalam dua grup untuk artikel dan pengguna: Private dan Public. Field Private dikhususkan untuk data admin saja, tidak terlihat oleh pengguna biasa.

Custom Post Type UI

Attendances Custom Post Type

Custom Post Type UI memudahkan pendaftaran custom post type melalui antarmuka visual. Saya menggunakannya untuk membuat post type attendance untuk mencatat siapa yang hadir di acara. Melihat ke belakang, fitur itu adalah desain yang buruk, sistem kehadiran terpisah akan lebih baik. Namun, saat itu saya tidak tahu cara menghubungkan data tersebut kembali ke pengguna, jadi saya mengambil rute paling sederhana: di WordPress, tipe entri baru sama dengan custom post type baru. Itu keputusan cepat yang akan saya lakukan secara berbeda hari ini.

Elementor

WordPress Elementor

Elementor bisa dibilang plugin paling berharga dalam proyek ini. Ini memberi kami pembuatan halaman drag-and-drop dengan pratinjau langsung. Teman saya butuh latihan agar nyaman, tetapi setelah menguasainya, mudah digunakan. Kekurangannya: halaman dimuat dengan lambat, dan fitur lengkapnya tidak tersedia di versi gratis.

ProfilePress

WordPress ProfilePress

Saya memilih ProfilePress terutama untuk persetujuan pendaftaran dan foto profil pengguna. Saya mengira WordPress bisa menanganinya dengan konfigurasi minimal, tetapi bahkan hal-hal dasar ini memerlukan plugin, dan plugin ini hadir dengan fitur yang jauh lebih banyak dari yang saya butuhkan.

Yoast SEO

WordPress Yoast SEO

Saya memasang Yoast untuk berjaga-jaga jika teman saya ingin menyesuaikan deskripsi meta. Itu membawa banyak opsi tambahan yang tidak kami pahami sepenuhnya, dan pada akhirnya kami jarang menggunakannya.

Masalah

Setelah sepuluh tahun, kami menghadapi beberapa masalah produksi.

Itulah dua masalah utama. Ada juga kekhawatiran tentang kecepatan halaman, tetapi itu bukan masalah inti bisnis.

Saya sebenarnya bisa memperbaiki masalah peringkat dengan menghitung ulang setelah setiap postingan diterbitkan, tetapi dengan sekitar satu juta artikel, itu akan menjadi usaha yang sangat besar.

Lesstruct

Setelah satu dekade, saya memutuskan untuk merombak situs dengan memigrasikannya ke Lesstruct untuk jangka panjang. Berikut alasannya:

Lesstruct menyertakan fitur impor WordPress bawaan yang bahkan dapat membawa custom field dan gambar. Halaman Elementor lebih rumit, karena disimpan sebagai entri terpisah. Jadi saya menggunakan AI untuk membangun migrasi khusus yang mengubah halaman Elementor tersebut menjadi HTML/CSS.

Lesstruct merender di sisi server secara default, jadi saya tidak perlu proyek front-end terpisah seperti yang biasanya dilakukan dengan CMS headless, saya hanya perlu mengubah tema lama menjadi tema Lesstruct. Untuk halaman Elementor, saya membuat templat khusus yang dinamai seperti <custom-post-type>_<slug>.html.

Ekspor CSV dulunya adalah menu khusus di panel admin WordPress. Di sistem baru, saya menulis skrip Python khusus untuk mengekspor data ke CSV. Karena peringkat dan poin bersifat publik, skrip ini dijalankan secara manual sebulan sekali.

Saya juga menulis skrip shell untuk mengecilkan (minify) stylesheet:

#!/bin/bash
set -e

THEME_DIR="$(cd "$(dirname "$0")/.." && pwd)"
STATIC_DIR="$THEME_DIR/static"

echo "=== Building theme assets ==="

# Minify CSS (versioning handled by core's {{assetURL}})
if [ -f "$STATIC_DIR/style.src.css" ]; then
  minify -o "$STATIC_DIR/style.css" "$STATIC_DIR/style.src.css"
  echo "Minified style.src.css -> style.css ($(wc -c < "$STATIC_DIR/style.css") bytes)"
else
  echo "ERROR: style.src.css not found"
  exit 1
fi

echo "=== Done ==="

Secara total, saya akhirnya menulis hanya satu plugin Lesstruct khusus untuk menghitung poin dan peringkat penulis secara langsung (on the fly).

Artikel Terkait

Terjemahan

Komentar