WP Manifestindependent plugin directory
manifest / content / rezandroid-bookmark

Rezandroid Bookmark API

Plugin Wordpress untuk Menyimpan Bacaan yang sudah dibaca

by Reza Ervani · github.com/rezaervani/rezandroid-bookmark · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/rezaervani/rezandroid-bookmark/archive/refs/heads/main.zip

Rezandroid Bookmark API & Dashboard 🔖

Sebuah plugin WordPress modular yang dirancang khusus untuk ekosistem KOMPUTROBOTIKA - Reza Ervani Institute. Plugin ini menjembatani fitur "Daftar Bacaan" (Bookmark) antara aplikasi Flutter (Rezandroid) dan platform web (rezaervani.com) secara real-time menggunakan REST API dan AJAX.

✨ Fitur Utama

  1. REST API Terbuka namun Aman: Menyediakan endpoint khusus (/rezandroid/v1/) yang terintegrasi dengan sistem autentikasi bawaan WordPress (JWT/Application Passwords) untuk aplikasi mobile.
  2. Tombol Web Interaktif: Otomatis menyisipkan tombol "Simpan ke Daftar Bacaan" di setiap artikel tunggal (single post) bagi pengguna yang sudah login. Berjalan menggunakan AJAX tanpa perlu reload halaman.
  3. Dashboard Admin WP: Menyediakan menu khusus di backend WordPress bagi pengguna untuk melihat statistik bacaan dan mengelola daftar artikel yang disimpan.
  4. Dashboard Frontend (Shortcode): Menyediakan shortcode [rezandroid_bookmarks] untuk merender halaman daftar bacaan di bagian depan situs web.
  5. Penyimpanan Efisien: Memanfaatkan tabel wp_usermeta bawaan WordPress sehingga sangat ringan, cepat, dan tidak membebani database dengan tabel khusus baru.

🗄️ Arsitektur Database (Penyimpanan Efisien)

Untuk menjaga performa server dan mencegah pembengkakan database, plugin ini tidak melakukan eksekusi CREATE TABLE untuk membuat tabel khusus. Seluruh data daftar bacaan disimpan dengan aman memanfaatkan tabel relasional bawaan WordPress, yaitu wp_usermeta.

Struktur Penyimpanan di wp_usermeta:

umeta_id user_id meta_key meta_value
1042 5 rezandroid_bookmarks a:3:{i:0;i:152;i:1;i:87;i:2;i:40;}

Mekanisme Serialisasi (Serialization): Karena MySQL/MariaDB tradisional tidak dapat menyimpan tipe data Array secara langsung, array ID artikel dikonversi menjadi string saat disimpan ke meta_value melalui mekanisme serialization bawaan fungsi update_user_meta(). Saat data dipanggil kembali menggunakan get_user_meta(), teks tersebut otomatis diterjemahkan (unserialized) kembali menjadi bentuk Array yang rapi.

Keuntungan Pendekatan Ini:

  • Sangat Ringan: Tidak ada penambahan beban indeks atau tabel yatim (orphan tables).
  • Garbage Collection Otomatis: Jika seorang user (murid/pembaca) dihapus dari ekosistem WordPress, seluruh daftar bacaan miliknya akan ikut terhapus secara otomatis oleh sistem inti WordPress tanpa perlu trigger SQL tambahan.
  • Kecepatan Akses: Membaca satu baris meta jauh lebih cepat dan minim query dibandingkan melakukan skema JOIN yang rumit.

📂 Struktur Direktori

Plugin ini dibangun dengan prinsip Separation of Concerns (SoC) untuk kemudahan maintenance dan skalabilitas:

rezandroid-bookmark/
├── rezandroid-bookmark.php      # Terminal utama penginisialisasi modul
├── includes/
│   ├── class-api.php            # Logika REST API & modifikasi database
│   ├── class-ui.php             # Injeksi tombol bookmark di artikel konten
│   ├── class-admin.php          # Registrasi menu & UI WP Admin Dashboard
│   └── class-shortcode.php      # Render UI frontend via shortcode
└── assets/
    └── js/
        └── bookmark.js          # Skrip penanganan event klik & AJAX

🚀 Instalasi

  1. Clone repositori ini atau unduh sebagai file .zip.
  2. Unggah folder rezandroid-bookmark ke dalam direktori /wp-content/plugins/ di server WordPress Anda.
  3. Masuk ke WP Admin > Plugins dan aktifkan plugin Rezandroid Bookmark API.
  4. (Opsional) Buat halaman baru dan masukkan shortcode [rezandroid_bookmarks] untuk membuat dashboard frontend bagi pembaca.

📖 Dokumentasi REST API (Untuk Flutter/Aplikasi Mobile)

Pastikan setiap request menyertakan header otorisasi yang valid, misalnya JWT Token.

Authorization: Bearer <token_anda>

1. Toggle Bookmark (Simpan/Hapus)

Endpoint cerdas ini akan menambahkan artikel jika belum ada, dan menghapusnya jika sudah ada di dalam daftar.

  • URL: /wp-json/rezandroid/v1/bookmark
  • Method: POST
  • Headers: * Content-Type: application/json
    • Authorization: Bearer <token>
  • Body (JSON):
    {
      "post_id": 123
    }
  • Response Sukses (200 OK):
    {
      "success": true,
      "action": "added" 
    }

2. Ambil Daftar Bacaan

Mengambil seluruh artikel yang telah ditandai oleh user yang sedang login.

  • URL: /wp-json/rezandroid/v1/bookmarks
  • Method: GET
  • Headers: * Authorization: Bearer <token>
  • Response Sukses (200 OK):
    {
      "success": true,
      "data": [
        {
          "id": 123,
          "title": "Memahami Arsitektur x86",
          "date": "2026-01-10",
          "link": "[https://rezaervani.com/memahami-x86](https://rezaervani.com/memahami-x86)"
        }
      ]
    }

👨‍💻 Lisensi & Penulis

Dikembangkan untuk kebutuhan internal pembelajaran dan literasi.