antond.net

0 %
Anton Darmawanto
Front-end Developer
Ui/UX Designer
  • Residence:
    Indonesia
  • City:
    Jakarta Selatan
  • Age:
    40
Indonesian
English
Jawa
html
CSS
Js
PHP
WordPress
Proxmox
Laravel
Linux server (ubuntu, debian, fedora)
Alibaba Cloud
  • Proxmox, Vm Ware
  • Stylus, Sass, Less
  • Gulp, Webpack, Grunt
  • GIT knowledge
0

No products in the cart.

Return To Shop

Cara Memasang Schema Markup di WordPress Tanpa Plugin

29/09/2026

Ada satu pertanyaan yang muncul hampir setiap kali saya mengerjakan website WordPress untuk klien UMKM: bukankah plugin SEO sudah memasang schema markup otomatis?

Betul, dan sebagian besar memang otomatis. Tapi ada momen ketika plugin itu justru jadi masalah. Bisa karena klien sedang pindah dari satu plugin ke plugin lain dan tidak mau dua plugin SEO bertabrakan. Bisa karena pluginnya sudah terlalu berat dan saya sedang mengurangi beban. Bisa karena tipe schema yang dibutuhkan tidak ada di paket gratis. Atau karena tema/hosting yang dipakai tidak punya cara aman untuk menambah kode.

Di semua kasus itu, jawabannya sama: pasang sendiri. Kabar baiknya, memasang schema markup di WordPress tanpa plugin jauh lebih mudah dari yang dibayangkan.

Kapan Pasang Manual Jadi Pilihan Tepat?

Jujur dulu soal ini: kalau Anda belum punya plugin SEO sama sekali, saya tidak menyarankan pasang manual. Pakai saja Rank Math versi gratis — lebih praktis.

Pasang manual masuk akal dalam empat situasi berikut:

Satu, Anda sudah punya plugin SEO dan tidak mau dobel. Dua plugin SEO di satu website hampir selalu berakhir dengan schema duplikat. Google membaca dua blok yang menyatakan hal sama dengan format sedikit berbeda — hasilnya bukan digabung, tapi membingungkan. Ini penyebab nomor satu schema rusak yang pernah saya temui.

Dua, Anda butuh tipe schema yang tidak ada di plugin. Saya pernah mengerjakan website fotografer pengantin yang butuh schema untuk paket layanan — tidak tersedia di paket gratis pluginnya. Pasang manual lebih sehat daripada upgrade plugin.

Tiga, Anda menjaga website tetap ringan. Setiap plugin menambah query database dan file yang dimuat. Untuk website UMKM yang masih kecil, setiap milidetik itu berarti.

Empat, Anda cuma butuh satu blok di satu halaman tertentu. Plugin schema bekerja di seluruh situs. Kalau yang dibutuhkan cuma satu blok JSON-LD di satu landing page, menambah hook di functions.php jauh lebih ringan.

Kalau salah satu dari empat ini adalah situasi Anda, lanjutkan membaca. Kalau bukan, pakai plugin gratis saja dan hemat tenaga Anda.

Metode 1: functions.php (Paling Stabil, Paling Direkomendasikan)

Ini metode yang hampir selalu saya pakai karena paling stabil: kodenya tinggal di dalam tema, aktif otomatis, tidak perlu ditempel ulang.

Buka Appearance → Theme Editor → functions.php. Kalau menu itu tidak terlihat, install plugin Code Snippets (gratis) dulu, lalu tambahkan kode dari sana.

Tempel kode berikut di bagian paling bawah file:

function tambah_schema_markup() {
    if ( ! is_front_page() ) {
        return;
    }
    $schema = array(
        '@context'  => 'https://schema.org',
        '@type'     => 'LocalBusiness',
        'name'      => 'Nama Usaha Anda',
        'url'       => home_url('/'),
        'telephone' => '+62-812-3456-7890',
        'address'   => array(
            '@type'           => 'PostalAddress',
            'streetAddress'   => 'Jl. Kemang Raya No. 10',
            'addressLocality' => 'Jakarta Selatan',
            'addressRegion'   => 'Jakarta',
            'postalCode'      => '12730',
            'addressCountry'  => 'ID',
        ),
        'geo' => array(
            '@type'     => 'GeoCoordinates',
            'latitude'  => -6.2600,
            'longitude' => 106.8140,
        ),
        'openingHoursSpecification' => array(
            array(
                '@type'    => 'OpeningHoursSpecification',
                'dayOfWeek' => array('Monday','Tuesday','Wednesday','Thursday','Friday'),
                'opens'     => '09:00',
                'closes'    => '18:00',
            ),
        ),
        'sameAs' => array(
            'https://www.instagram.com/akunanda',
            'https://www.facebook.com/akunanda',
        ),
    );
    echo '<script type="application/ld+json">' .
         wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ) .
         '</script>';
}
add_action( 'wp_head', 'tambah_schema_markup' );

Dua detail yang wajib diperhatikan — inilah yang paling sering bikin orang gagal:

Pertama, nama fungsi harus konsisten. Nama fungsi yang didefinisikan dan yang dipanggil di add_action harus persis sama. Kalau beda, PHP akan memunculkan error “call to undefined function” dan halaman bisa ikut mati. Pakai nama tanpa tanda hubung dan tanpa spasi: tambah_schema_markup aman, tambah-schema-markup tidak aman (tanda hubung dibaca PHP sebagai pengurangan).

Kedua, selalu pakai wp_json_encode, bukan json_encode biasa. Fungsi bawaan WordPress ini otomatis menangani karakter khusus dan memastikan outputnya aman di dalam HTML.

Setelah selesai, buka homepage, tekan Ctrl+U, lalu cari application/ld+json. Kalau blok itu muncul, Anda berhasil.

Metode 2: Widget HTML (Tanpa PHP Sama Sekali)

Kalau Anda tidak mau menyentuh kode PHP sama sekali, pakai widget HTML di sidebar atau footer. Buka Appearance → Widgets, cari blok Custom HTML, lalu tempel kode JSON-LD berikut:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Nama Usaha Anda",
  "url": "https://namadomainanda.com",
  "telephone": "+62-812-3456-7890",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Jakarta Selatan",
    "addressRegion": "Jakarta",
    "addressCountry": "ID"
  }
}
</script>

Keuntungan: cepat, tidak ada risiko error PHP, bisa dipakai per halaman.

Kekurangan: widget biasanya di footer/sidebar, jadi schema hanya muncul di halaman yang menampilkan area tersebut. Untuk schema beranda ini masih cukup karena Google membacanya dari mana saja di halaman — tapi kalau tema Anda menyembunyikan footer di halaman tertentu, halaman itu tidak kebagian schema.

Variasi: untuk JSON-LD yang hanya perlu di satu halaman, tambahkan blok Custom HTML langsung di dalam editor halaman tersebut, di bawah konten.

Metode 3: Blok Custom HTML (Paling Minim Risiko)

Metode paling aman kalau Anda tidak ingin menyentuh file apa pun. Buka halaman yang dituju, klik ikon + di editor Gutenberg, cari blok Custom HTML, lalu tempel kode JSON-LD di dalamnya. Simpan.

Kodenya sama seperti Metode 2. Kelebihannya jelas: tidak menyentuh file tema, tidak menyentuh PHP, dan kalau salah tinggal hapus bloknya. Ini yang saya sarankan untuk pemula.

Kekurangannya: harus diulang di setiap halaman yang butuh, dan kalau lupa di satu halaman, halaman itu tidak punya schema.

Schema Berbeda untuk Halaman Berbeda (Pakai Kondisi if)

Pertanyaan yang sering muncul: bagaimana memasang schema berbeda di halaman berbeda tanpa banyak file? Jawabannya: pakai kondisi di dalam satu fungsi. Fungsi is_page() dan is_single() memungkinkan Anda menampilkan output berbeda tergantung halaman yang dibuka.

Contoh: JSON-LD LocalBusiness untuk beranda dan JSON-LD Article untuk halaman artikel, dalam satu fungsi:

function tambah_schema_kondisi() {
    if ( is_front_page() ) {
        $schema = array(
            '@context' => 'https://schema.org',
            '@type'    => 'LocalBusiness',
            'name'     => 'Nama Usaha Anda',
            'url'      => home_url('/'),
        );
    } elseif ( is_single() ) {
        $schema = array(
            '@context'         => 'https://schema.org',
            '@type'            => 'Article',
            'headline'         => get_the_title(),
            'datePublished'    => get_the_date(),
            'author'           => array(
                '@type' => 'Person',
                'name'  => 'Nama Penulis',
            ),
            'publisher'        => array(
                '@type' => 'Organization',
                'name'  => 'Nama Usaha Anda',
            ),
            'mainEntityOfPage' => get_permalink(),
        );
    } else {
        return;
    }
    echo '<script type="application/ld+json">' .
         wp_json_encode( $schema, JSON_UNESCAPED_SLASHES ) .
         '</script>';
}
add_action( 'wp_head', 'tambah_schema_kondisi' );

Satu fungsi ini memberi Anda schema untuk beranda dan semua artikel tanpa beban plugin tambahan. WordPress juga menyediakan is_category() untuk halaman kategori dan is_page() untuk halaman statis.

Menambahkan FAQPage Manual

Kasus kedua yang paling sering ditanyakan setelah LocalBusiness. Aturannya perlu dipahami karena berbeda: schema FAQPage hanya boleh dipasang untuk pertanyaan dan jawaban yang benar-benar terlihat di halaman. Ini bukan saran — ini aturan Google. Menandai FAQ yang tersembunyi melanggar pedoman dan bisa berakibat penalti.

Jadi kalau Anda menulis FAQ di artikel, pisahkan pertanyaan dan jawaban ke Heading dan Paragraf masing-masing, seperti contoh berikut:

<div class="wp-block-group">
  <h3>Berapa lama pengerjaan website UMKM?</h3>
  <p>Untuk website UMKM standar, pengerjaannya 1 sampai 2 minggu tergantung jumlah halaman dan tingkat revisi yang dibutuhkan.</p>
</div>

Setelah FAQ terlihat di halaman, tambahkan blok JSON-LD-nya di bawah:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Berapa lama pengerjaan website UMKM?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Untuk website UMKM standar, pengerjaannya 1 sampai 2 minggu tergantung jumlah halaman dan tingkat revisi yang dibutuhkan."
      }
    }
  ]
}
</script>

Perhatikan: isi name dan text harus sama persis dengan yang tertulis di halaman. Kalau berbeda, Google bisa menganggap schema tidak mencerminkan konten — efeknya sama saja seperti tidak memasang.

Satu catatan penting soal FAQPage di 2026: tampilan kotak tanya-jawab di hasil pencarian kini dipersempit Google hanya untuk situs otoritatif di bidang kesehatan atau pemerintahan. Jadi untuk website UMKM, jangan terlalu berharap pada tampilan visualnya.

Yang tetap bernilai: FAQ schema adalah salah satu sumber kutipan yang paling sering dibaca AI Overviews dan asisten AI saat menjawab pertanyaan pengguna. Jadi tulis FAQ untuk dibaca manusia — mesin akan mengambilnya dengan sendirinya.

Pertanyaan yang Sering Muncul

“Kalau saya sudah pakai plugin SEO, boleh tambah manual?”
Bisa, tapi hanya untuk tipe yang belum dipakai plugin itu. Kalau plugin Anda sudah mengeluarkan schema Organization dan Article, jangan tambah ulang. Yang aman ditambahkan manual adalah tipe khusus seperti Service atau LocalBusiness dengan sub-tipe spesifik.

“Apakah schema hilang setiap theme di-update?”
Kalau Anda edit functions.php langsung, ya, bisa hilang. Solusinya: pakai child theme, atau pakai plugin Code Snippets yang menyimpan kode di database sehingga tidak menyentuh file tema sama sekali.

Menguji Hasilnya (Jangan Lewati Langkah Ini)

Memasang kode bukan berarti selesai. Harus diuji — ada dua alat gratis untuk itu.

Pertama, Rich Results Test dari Google. Buka search.google.com/test/rich-results, masukkan URL halaman Anda, jalankan. Alat ini memberi tahu apakah Google membaca schema Anda, tipe apa yang terdeteksi, dan apa yang salah.

Kedua, validator schema.org. Buka validator.schema.org, tempel kode JSON-LD Anda. Alat ini menangkap kesalahan yang tidak selalu terlihat di Rich Results Test, seperti tanda kutip yang salah atau koma yang kurang.

Jalankan keduanya. Kalau lolos, lanjutkan ke langkah ketiga yang paling sering terlewat: cek langsung kode sumber halaman. Buka website di browser, tekan Ctrl+U, cari application/ld+json. Kalau blok itu tidak ada, berarti hook Anda tidak jalan atau plugin caching masih menyimpan versi lama.

Kalau memakai plugin caching seperti LiteSpeed Cache atau WP Rocket, bersihkan cache setelah memasang schema — ini penyebab paling umum schema sudah terpasang tapi tidak muncul.

Terakhir, pantau Google Search Console. Di laporan Enhancements Anda bisa melihat apakah Google mengakui schema Anda. Kalau jenis schema Anda muncul di sana, artinya sudah diterima.

4 Kesalahan yang Paling Sering Terjadi

Kesalahan 1: nama fungsi PHP mengandung tanda hubung. Sudah dibahas di atas — penyebab paling umum orang merasa gagal padahal kodenya benar.

Kesalahan 2: JSON tidak valid. Salah koma, salah tanda kutip, atau baris baru yang ikut terbawa. Selalu cek di validator schema.org dulu sebelum dimuat ke website.

Kesalahan 3: schema duplikat. Plugin SEO ternyata sudah punya LocalBusiness, lalu Anda tambah satu lagi manual. Buka kode sumber dan hitung berapa kali application/ld+json muncul — kalau lebih dari satu untuk tipe yang sama, hapus salah satunya.

Kesalahan 4: kode ditaruh di file yang hilang saat update. Edit functions.php langsung berarti perubahan hilang saat tema di-update. Pakai child theme atau Code Snippets. Ini kejadian klasik: website jalan baik setahun, tema di-update, schema hilang tanpa ada yang sadar.

Ringkasan

Pasang manual schema di WordPress itu tidak sulit. Yang sulit adalah tahu metode mana yang sesuai kondisi website Anda.

Butuh satu blok stabil untuk seluruh situs? Pakai functions.php dengan child theme atau Code Snippets. Tidak mau menyentuh PHP sama sekali? Pakai blok Custom HTML di halaman yang dibutuhkan. Butuh yang cepat dan sederhana? Widget HTML cukup.

Dan yang utama: uji setiap kali Anda mengubah sesuatu. Schema yang tidak diuji sama saja dengan schema yang tidak ada.

Kalau schema sudah terpasang tapi belum berdampak, biasanya masalahnya bukan di kode — melainkan konsistensi data bisnis Anda di luar website. Google Business Profile, halaman kontak, dan direktori harus saling cocok dulu sebelum data terstruktur dipercaya Google.

Posted in TutorialTags: