WordPress Code Snippets

Update: 20-11-2025

Deskripsi: Cara manual mengganti URL slug WordPress author yang biasanya /author menjadi apa saja yang Anda inginkan. Misalnya, /pengguna/username atau /pengguna/@username.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Cara manual untuk mengganti URL slug WordPress author yang biasanya /author menjadi apa saja yang Anda inginkan. Misalnya, /pengguna/username atau /pengguna/@username. Anda bisa menerapkannya tanpa plugin tambahan.

URL Slug WordPress Author tanpa Tanda “@”

PHP
function scr_change_author_slug() {
	global $wp_rewrite;
	$wp_rewrite->author_structure = 'pengguna/%author%';
}
add_action('init', 'scr_change_author_slug', 10);

URL Slug WordPress Author dengan Tanda “@”

PHP
function scr_change_author_slug() {
	global $wp_rewrite;
	$wp_rewrite->author_structure = 'pengguna/@%author%';
}
add_action('init', 'scr_change_author_slug', 10);

Update: 06-11-2025

Deskripsi: Menyematkan bendera Indonesia menggunakan elemen SVG pada halaman website. Biasanya ditaruh di footer dengan teks "Develop by Rio Mastri from [bendera]."

Tipe: HTML

Fungsi: Style, Core

Lokasi: Page

Lihat selengkapnya

Menyematkan bendera Indonesia menggunakan elemen SVG pada halaman website. Biasanya ditaruh di footer dengan teks “Develop by Rio Mastri from [bendera].”

HTML
<svg xmlns="http://www.w3.org/2000/svg" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 16 11.15" width="16" height="11.15"><g fill-rule="nonzero"><path fill="#fff" stroke="#CCC" stroke-width=".066" stroke-miterlimit="2.613" d="M.908.031h14.184a.88.88 0 0 1 .873.877v9.334a.88.88 0 0 1-.87.877H.901a.88.88 0 0 1-.87-.877V.908c0-.48.397-.877.877-.877z"/><path fill="red" d="M.939.062h14.122c.497-.014.873.38.873.877v4.636H.062V.939c0-.497.376-.891.877-.877"/></g></svg>

Update: 06-11-2025

Deskripsi: Baris JavaScript dan CSS ini berfungsi untuk menambahkan password visibility toggle pada field "Password" Fluent Forms. Dengan begitu, pengguna bisa melihat dan menyembunyikan kata sandi yang akan dibuat. Taruh skrip ini pada JS/CSS Editor milik Fluent Forms. Apabila Anda memilih untuk menggunakan WordPress Dashicons, silakan ganti string menjadi dashicons. Password Visibility Toggle JavaScript Berikut adalah…

Tipe: JavaScript

Fungsi: Style

Lokasi: Other

Lihat selengkapnya

Baris JavaScript dan CSS ini berfungsi untuk menambahkan password visibility toggle pada field “Password” Fluent Forms. Dengan begitu, pengguna bisa melihat dan menyembunyikan kata sandi yang akan dibuat.

Taruh skrip ini pada JS/CSS Editor milik Fluent Forms.

Apabila Anda memilih untuk menggunakan WordPress Dashicons, silakan ganti string menjadi dashicons.

Password Visibility Toggle JavaScript

Berikut adalah kode JS untuk Password visibility toggle Fluent Forms.

JavaScript
(function() {
  'use strict';
  
  const FORM_SELECTOR = 'form.fluent_form_4';//Sesuaikan "4" dengan form ID Anda
  let passIdCounter = 0;

  function enhancePasswordField(input) {
    if (input.dataset.ffEnhanced) return;

    // Pastikan ID memang ada
    if (!input.id) input.id = `ff-pass-${++passIdCounter}`;

    // Membuat wrapper jika tidak ada
    if (!input.closest('.ff-password-wrap')) {
      const wrapper = document.createElement('div');
      wrapper.className = 'ff-password-wrap';
      input.parentNode.insertBefore(wrapper, input);
      wrapper.appendChild(input);
    }

    const wrapper = input.closest('.ff-password-wrap');
    
    // Membuat toggle button
    const toggleBtn = document.createElement('button');
    Object.assign(toggleBtn, {
      type: 'button',
      className: 'ff-toggle-pass',
      textContent: 'Lihat'
    });
    toggleBtn.setAttribute('aria-label', 'Lihat kata sandi');
    toggleBtn.setAttribute('aria-controls', input.id);
    toggleBtn.setAttribute('aria-pressed', 'false');

    wrapper.appendChild(toggleBtn);

    // Toggle functionality
    toggleBtn.addEventListener('click', (e) => {
      e.preventDefault();
      
      // Posisi cursor
      const { selectionStart, selectionEnd } = input;
      
      // Toggle type
      const newType = input.type === 'password' ? 'text' : 'password';
      input.type = newType;
      
      // Kembalikan posisi cursor
      if (typeof selectionStart === 'number') {
        setTimeout(() => {
          try { input.setSelectionRange(selectionStart, selectionEnd); } catch(e) {}
        });
      }

      // Ck state setelah toggle
      const isNowVisible = input.type === 'text';
      
      toggleBtn.setAttribute('aria-pressed', String(isNowVisible));
      
      if (isNowVisible) {
        // Password sedang ditampilkan
        toggleBtn.setAttribute('aria-label', 'Sembunyikan kata sandi');
        toggleBtn.textContent = 'Sembunyikan';
      } else {
        // Password sedang disembunyikan
        toggleBtn.setAttribute('aria-label', 'Lihat kata sandi');  
        toggleBtn.textContent = 'Lihat';
      }
    });

    input.dataset.ffEnhanced = 'true';
  }

  function enhanceAll() {
    const form = document.querySelector(FORM_SELECTOR);
    if (!form) return;
    
    form.querySelectorAll('input[type="password"]:not([data-ff-enhanced])').forEach(enhancePasswordField);
  }

  // Initialize
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', enhanceAll);
  } else {
    enhanceAll();
  }

  // Handle dynamic content
  const form = document.querySelector(FORM_SELECTOR);
  if (form && window.MutationObserver) {
    new MutationObserver(enhanceAll).observe(form, { childList: true, subtree: true });
  }

})();

Kode CSS untuk Password Field Fluent Forms

Kode CSS berikut tidak bersifat absolut. Dalam arti lain, Anda bisa menyesuaikan dengan selera Anda masing-masing.

CSS
.fluent_form_4 .ff-password-wrap {
  position: relative;
}

.fluent_form_4 .ff-password-wrap .ff-toggle-pass {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  
  background: none;
  border: 1px solid transparent;
  padding: 4px 8px;
  cursor: pointer;
  
  font: inherit;
  font-size: 0.875rem;
  color: #6b7280;
  border-radius: 4px;
  
  transition: all 0.15s ease;
}

.fluent_form_4 .ff-password-wrap .ff-toggle-pass:hover {
  color: #374151;
  background: rgba(0, 0, 0, 0.05);
}

.fluent_form_4 .ff-password-wrap .ff-toggle-pass:focus-visible {
  outline: 2px solid #3b82f6;
  outline-offset: 2px;
}

/* Tambahkan padding ke input untuk mencegah overlap */
.fluent_form_4 .ff-password-wrap input {
  padding-right: 80px !important;
}

/* Screen reader only */
.fluent_form_4 .sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

Update: 06-11-2025

Deskripsi: Dengan menerapkan kode ini, maka editor postingan (bukan page/halaman) akan kembali ke mode classic editor. Nonaktifkan Block Editor untuk Postingan

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Dengan menerapkan kode ini, maka editor postingan (bukan page/halaman) akan kembali ke mode classic editor.

Nonaktifkan Block Editor untuk Postingan

PHP
function balik_ke_classic_editor($enabled, $post_type) {
    return 'post' === $post_type ? false : $enabled;
}

add_filter('use_block_editor_for_post_type', 'balik_ke_classic_editor', 10, 2);

Update: 06-11-2025

Deskripsi: Untuk memastikan semua URL akan memiliki akhiran slash (/) seperti contoh: /blog/. Memaksa Akhiran Slash pada Apache Memaksa Akhiran Slash pada Nginx Sumber: FlyingPress

Tipe: HTML

Fungsi: Security, Core

Lokasi: .htaccess

Lihat selengkapnya

Untuk memastikan semua URL akan memiliki akhiran slash (/) seperti contoh: /blog/.

Memaksa Akhiran Slash pada Apache

HTML
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_URI} /+[^\.]+$ 
    RewriteCond %{REQUEST_URI} !^/wp-json
    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

Memaksa Akhiran Slash pada Nginx

HTML
if ($request_uri !~ "^/wp-json") {
    rewrite ^([^.]*[^/])$ $1/ permanent;
}

Sumber: FlyingPress

Update: 06-11-2025

Deskripsi: Membatasi akses ke halaman admin WordPress. Apabila ada yang mencoba mengaksesnya maka (dalam kasus ini) akan diarahkan ke halaman /blog. Selain itu, ketika meminta perubahan password, maka skrip ini tidak akan dieksekusi.

Tipe: PHP

Fungsi: Security, Core

Lokasi: functions.php

Lihat selengkapnya

Membatasi akses ke halaman admin WordPress. Apabila ada yang mencoba mengaksesnya maka (dalam kasus ini) akan diarahkan ke halaman /blog. Selain itu, ketika meminta perubahan password, maka skrip ini tidak akan dieksekusi.

PHP
//Membatasi akses "/wp-admin dan" "/wp-login.php"
add_action('init', 'restrict_access_to_admin');
function restrict_access_to_admin() {
    // Cek apakah user sedang mencoba mengakses wp-login.php atau wp-admin
    if ((strpos($_SERVER['REQUEST_URI'], '/wp-admin') !== false || 
        strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false ||
		    strpos($_SERVER['REQUEST_URI'], '/dashboard') !== false) &&
        !is_user_logged_in() && 
        !isset($_POST['wp-submit'])) {
        
        if (isset($_GET['action']) && in_array($_GET['action'], array('logout', 'rp', 'resetpass', 'lostpassword'))) {
            return;
        }
        
        // Pengecualian untuk token reset password (key & login parameters)
        if (isset($_GET['key']) && isset($_GET['login'])) {
            return;
        }
        
        // Pengecualian untuk AJAX requests
        if (defined('DOING_AJAX') && DOING_AJAX) {
            return;
        }
        
        // Redirect ke halaman utama atau halaman login kustom
        wp_redirect(home_url('/blog/'));
        exit;
    }
}

Update: 06-11-2025

Deskripsi:

Tipe: PHP

Fungsi: Style, Core

Lokasi: functions.php

Lihat selengkapnya
PHP
add_filter( 'get_avatar_url', 'ganti_foto_avatar', 10, 3 );

function ganti_foto_avatar( $url, $id_or_email, $args ) {
    if ( is_numeric( $id_or_email ) ) {
        $user_id = $id_or_email;
    } elseif ( is_string( $id_or_email ) && ( $user = get_user_by( 'email', $id_or_email ) ) ) {
        $user_id = $user->ID;
    } elseif ( is_object( $id_or_email ) && ! empty( $id_or_email->user_id ) ) {
        $user_id = (int) $id_or_email->user_id;
    }

    if ( empty( $user_id ) ) {
        return $url;
    }

    $custom_avatar = rwmb_meta( 'custom_avatar', [ 'object_type' => 'user' ], $user_id );//Sesuaikan 'custom_avatar' dengan ID Single image yang Anda buat.

    if ( ! $custom_avatar ) {
        return $url;
    }

    $url = $custom_avatar['full_url'];

    return $url;
}

Update: 06-11-2025

Deskripsi: Mengubah judul formulir komentar bawaan WordPress menjadi yang diinginkan. Silakan ganti 'Mari berdiskusi' sesuai keinginan Anda.

Tipe: PHP

Fungsi: Style, Core

Lokasi: functions.php

Lihat selengkapnya

Mengubah judul formulir komentar bawaan WordPress menjadi yang diinginkan. Silakan ganti ‘Mari berdiskusi’ sesuai keinginan Anda.

PHP
//Ganti judul komentar
add_filter('comment_form_defaults', 'ganti_judul_komentar', 20);
function ganti_judul_komentar( $defaults ){
 $defaults['title_reply'] = __('Mari berdiskusi', 'customizr-child');
 return $defaults;
}

Update: 06-11-2025

Deskripsi: Cara menghapus kolom URL atau website pada kolom komentar WordPress.Versi Video => Cara Menyembunyikan Kolom URL pada Komentar WordPress

Tipe: PHP

Fungsi: Security, Core

Lokasi: functions.php

Lihat selengkapnya

Cara menghapus kolom URL atau website pada kolom komentar WordPress.
Versi Video => Cara Menyembunyikan Kolom URL pada Komentar WordPress

PHP
//Hapus kolom situs web
add_action( 'after_setup_theme', 'hapus_url_komentar' );
function tu_add_comment_url_filter() {
    add_filter( 'comment_form_default_fields', 'hapus_url_komentar', 20 );
}

function hapus_url_komentar($fields) {
    unset($fields['url']);
    return $fields;
}

Update: 06-11-2025

Deskripsi: Cara menyembunyikan WordPress admin bar untuk pengguna yang memiliki role selain dari Administrator.

Tipe: PHP

Fungsi: Security, Core

Lokasi: functions.php

Lihat selengkapnya

Cara menyembunyikan WordPress admin bar untuk pengguna yang memiliki role selain dari Administrator.

PHP
add_action('after_setup_theme', 'remove_admin_bar_for_non_admin');
function remove_admin_bar_for_non_admin() {
    if (!current_user_can('administrator') && !is_admin()) {
        show_admin_bar(false);
    }
}

Update: 06-11-2025

Deskripsi: Rendering CSS variable pada block editor WordPress untuk GeneratePress/GenerateBlocks

Tipe: PHP

Fungsi: Style, Core

Lokasi: functions.php

Lihat selengkapnya

Rendering CSS variable pada block editor WordPress untuk GeneratePress/GenerateBlocks

PHP
//Bikin CCS Variable kebaca di editor
add_filter('generate_editor_styles', function($editor_styles) {
    $editor_styles[] = '/style.css';
    return $editor_styles;
}, 50);

Update: 06-11-2025

Deskripsi: Cara memindahkan kolom komentar yang secara default berada di bagian atas menjadi berada di bagian paling bawah.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Cara memindahkan kolom komentar yang secara default berada di bagian atas menjadi berada di bagian paling bawah.

PHP
//Mindahin kolom komentar ke bawah
function mindahin_kolom_komentar_ke_bawah( $fields ) {
$comment_field = $fields['comment'];
unset( $fields['comment'] );
$fields['comment'] = $comment_field;
return $fields;
}
 
add_filter( 'comment_form_fields', 'mindahin_kolom_komentar_ke_bawah');

Update: 06-11-2025

Deskripsi: Skrip ini berfungsi untuk men-disabled atau menonaktifkan wp-block-library dari website.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Skrip ini berfungsi untuk men-disabled atau menonaktifkan wp-block-library dari website.

PHP
function hapus_wp_block_library(){
    wp_dequeue_style( 'wp-block-library' );
    wp_dequeue_style( 'wp-block-library-theme' );
}
add_action( 'wp_enqueue_scripts', 'hapus_wp_block_library', 100 );

Update: 06-11-2025

Deskripsi: Skrip ini berfungsi untuk menonaktifkan meter Power Words pada plugin Rank Math agar tidak muncul pada post editor.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Skrip ini berfungsi untuk menonaktifkan meter Power Words pada plugin Rank Math agar tidak muncul pada post editor.

PHP
add_filter('rank_math/researches/tests', function ($tests, $type) {
	unset($tests['titleHasPowerWords']);
	return $tests;
}, 10, 2 );

Update: 06-11-2025

Deskripsi: Skrip ini bertujuan untuk menonaktifkan judul sentimen pada plugin Rank Math agar tidak muncul pada editor postingan. Bagi beberapa orang, meter ini menggangu proses editing post.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Skrip ini bertujuan untuk menonaktifkan judul sentimen pada plugin Rank Math agar tidak muncul pada editor postingan. Bagi beberapa orang, meter ini menggangu proses editing post.

PHP
add_filter('rank_math/researches/tests', function ($tests, $type) {
	unset($tests['titleSentiment']);
	return $tests;
}, 10, 2 );

Update: 06-11-2025

Deskripsi: Menonaktifkan parameter AI Rank Math pada editor post.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Menonaktifkan parameter AI Rank Math pada editor post.

PHP
add_filter('rank_math/researches/tests', function ($tests, $type) {
	unset($tests['hasContentAI']);
	return $tests;
}, 10, 2);

Update: 06-11-2025

Deskripsi: Cara mengganti logo pada halaman login WordPress default

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Cara mengganti logo pada halaman login WordPress default

PHP
function ganti_logo_halaman_login() {
    // Menggunakan URL gambar langsung
    $logo_url = get_custom_logo() ? wp_get_attachment_image_url(get_theme_mod('custom_logo'), 'full') : 'URL_LENGKAP_KE_MEDIA_LOGO';
    ?>
        body.login div#login h1 a {
            background-image: url();
            background-size: contain;
            width: 100%;
            height: 80px; /* Sesuaikan tinggi logo */
        }
    <?php
}
add_action( 'login_enqueue_scripts', 'ganti_logo_halaman_login' );

Update: 06-11-2025

Deskripsi: Mengganti teks "Search Results for" menjadi "Hasil pencarian untuk" pada tema GeneratePress

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Mengganti teks “Search Results for” menjadi “Hasil pencarian untuk” pada tema GeneratePress

PHP
function judul_hasil_pencarian( $items) { 
   if ( is_search() ) { 
      $items = str_replace( "Search Results for", "Hasil pencarian untuk", $items ); 
   } 
   return $items; 
} 

add_filter( 'generate_search_title_output', 'judul_hasil_pencarian', 9999, 2 );

Update: 06-11-2025

Deskripsi: Membatasi jumlah karakter judul pada halaman depan dan halaman arsip postingan.

Tipe: PHP

Fungsi: Core

Lokasi: functions.php

Lihat selengkapnya

Membatasi jumlah karakter judul pada halaman depan dan halaman arsip postingan.

PHP
function jumlah_karakter_judul( $title ) {
    // Cek apakah ini halaman archive atau frontpage
    if ( is_archive() || is_front_page() ) {
        // Tentukan panjang maksimal judul
        $max_length = 60;

        // Cek apakah panjang judul lebih dari batas maksimal
        if ( strlen( $title ) > $max_length ) {
            // Batasi jumlah karakter judul dan tambahkan …
            $newTitle = substr( $title, 0, $max_length );
            return $newTitle . " …"; 
        }
    }
    return $title; // Jika bukan halaman archive atau frontpage, kembalikan judul seperti biasa
}
add_filter( 'the_title', 'jumlah_karakter_judul', 10, 1 );