Tindakan ini, singkatnya, diluncurkan segera setelah semuanya siap kecuali header. Dan itulah sebabnya tindakan ini mungkin merupakan tindakan WordPress paling populer sepanjang masa – karena Anda dapat mengaitkan hampir semuanya.

Sebagai pengguna WordPress dari Turki, saya merasa aneh (dan agak mengesalkan) bahwa WordPress tidak mengizinkan kami mengubah basis URL untuk halaman penulis, hasil pencarian, atau halaman arsip yang dipaginasi di panel admin.

Potongan kode di bawah ini, membantu saya dengan masalah ini:

01
02
03
04
05
06
07
08
09
10
11
12
<?php
add_action( 'init', 'init_example' );
function init_example() {
    global $wp_rewrite;
    $wp_rewrite->author_base = 'profile';
    $wp_rewrite->search_base = 'find';
    $wp_rewrite->pagination_base = 'p';
}
?>

Keren, ya? (Tentu saja, saya mengganti kata-kata Turkish dengan ‘profile’, ‘find’ dan ‘p’ untuk membuatnya jelas.)

Ini tidak memerlukan pengenalan karena namanya menjelaskan sendiri: Tindakan kecil yang berguna ini memungkinkan kita untuk mengatur header HTTP untuk dikirim!

Meta tag X-UA-Compatible membuat Internet Explorer menggunakan mesin render yang ditentukan untuk halaman web. Jika Anda mengaturnya ke "edge", Internet Explorer akan menggunakan mesin rendering terbaru; namun, itu melanggar validasi HTML jika digunakan dengan Google Chrome Frame.

Untungnya, kita tidak terbatas pada penggunaan tag <meta>: Kita juga dapat menggunakan header HTTP. Dan tindakan send_headers sangat cocok untuk pekerjaan itu:

01
02
03
04
05
06
07
08
09
10
11
<?php
add_action( 'send_headers', 'send_headers_example' );
function send_headers_example() {
  header( 'X-UA-Compatible: IE=edge,chrome=1' );
}
?>

Jika Anda ingin menjalankan beberapa tugas setelah Anda beralih tema di WordPress, Anda dapat mengandalkan tindakan after_switch_theme.

Mari kita lakukan yang mudah: Bagaimana Anda flush rewrite rule setelah beralih ke tema baru, karena tema baru memiliki jenis posting kustom baru?

Nah, Anda menggunakan kode di bawah ini:

01
02
03
04
05
06
07
08
09
10
11
<?php
add_action( 'after_switch_theme', 'after_switch_theme_example' );
function after_switch_theme_example() {
    flush_rewrite_rules();
}
?>

Mudah, kan?

Untuk beberapa alasan, saya tidak bisa membuatnya bekerja dengan mengaitkan fungsi flush_rewrite_rules() ke tindakan after_switch_theme dan saya tidak bisa mengetahui mengapa – jika Anda memiliki jawabannya, beri tahu kami di komentar.

Tindakan kecil yang berguna ini memungkinkan kita untuk membuat kolom tambahan ke daftar posting di halaman admin “All Posts”.

Bayangkan bahwa Anda perlu melihat berapa banyak file yang Anda lampirkan ke setiap posting Anda karena, katakanlah, Anda ingin memeriksa ulang bahwa Anda melampirkan 10 gambar galeri untuk setiap posting Anda. Daripada menghitungnya satu per satu di Media Library, Anda dapat menambahkan kolom tambahan ke daftar di halaman “All Posts” seperti ini:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
add_filter( 'manage_posts_columns', 'manage_posts_columns_example', 5 );
add_action( 'manage_posts_custom_column', 'manage_posts_custom_column_example', 5, 2 );
function manage_posts_columns_example( $columns ) {
    $columns['post_attachments'] = __( 'Attached', 'theme-name' );
    return $columns;
}
function manage_posts_custom_column_example( $column_name, $post_id ) {
    if( 'post_attachments' == $column_name ) {
        $attachments = get_children( array( 'post_parent' => $post_id ) );
        $count = count( $attachments );
        if( $count != 0 ) {
            echo $count;
        }
    }
}
?>

Memang, ini adalah contoh untuk skenario yang sangat spesifik. Tetapi ingat bahwa Anda melihatnya di Tuts+ Code – Anda tidak pernah tahu kapan Anda membutuhkannya!

Dari waktu ke waktu, kita mungkin perlu menyuntikkan hal-hal ke dalam <head> dari halaman panel administrasi kita. Dan tindakan admin_head melakukan hal itu!

Contoh cepat dan sederhana ini menunjukkan cara menyuntikkan kode HTML yang diperlukan untuk “favicon” ke dalam <head> panel admin Anda dengan mudah:

01
02
03
04
05
06
07
08
09
10
11
<?php
add_action( 'admin_head', 'admin_head_example' );
function admin_head_example() {
    echo '<link rel="shortcut icon" type="image/x-icon" href="' . get_bloginfo('template_directory') . '/images/admin-favicon.ico" />';
}
?>

Tempatkan file admin-favicon.ico di dalam folder /images/ dari folder dalam tema Anda dan Anda siap menggunakannya!

Tindakan ini dipanggil ketika fungsi dengan nama yang sama, wp_footer() dijalankan. Anda dapat menggunakannya untuk menyesuaikan output dari fungsi.

Ingin melihat laporan cepat tentang berapa banyak kueri yang dijalankan halaman Anda dan berapa banyak memori yang mereka gunakan? Potongan kode ini akan membantu Anda dengan itu:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
add_action( 'wp_footer', 'wp_footer_example' );
function wp_footer_example() {
    $stat = sprintf( '%d queries in %.3f seconds, using %.2fMB memory',
        get_num_queries(),
        timer_stop( 0, 3 ),
        memory_get_peak_usage() / 1024 / 1024
    );
    if( current_user_can( 'manage_options' ) ) {
        echo "<!-- {$stat} -->";
    }
}
?>

Sekarang Anda akan melihat bagian informasi yang dikomentari tentang kueri Anda dalam kode sumber halaman web Anda. Jangan khawatir: Non-administrator tidak akan melihat ini.

Ini adalah salah satu tindakan fundamental yang perlu diketahui jika Anda bekerja dengan tema: Tindakan wp_enqueue_scripts menangani proses penambahan skrip dan gaya di front-end.

Ada banyak cara untuk memasukkan skrip dan gaya di bagian depan, tetapi hanya ada satu cara yang benar untuk melakukannya:

01
02
03
04
05
06
07
08
09
10
11
12
<?php
add_action( 'wp_enqueue_scripts', 'wp_enqueue_scripts_example' );
function wp_enqueue_scripts_example() {
    // you can enqueue scripts...
    wp_enqueue_script( 'my-script', get_stylesheet_directory_uri() . '/scripts/my-script.js' );
    // ...and styles, too!
    wp_enqueue_style( 'my-style', get_stylesheet_directory_uri() . '/styles/my-style.css' );
}
?>

Tindakan admin_notices bertanggung jawab untuk semua peringatan, kesalahan atau pesan lain yang ditampilkan di header halaman admin. Anda dapat menggunakannya untuk menampilkan pesan Anda sendiri juga.

Misalkan Anda memindahkan server dan Anda perlu memberi tahu penulis tentang situasinya: Mereka seharusnya tidak memposting apa pun! Anda dapat mengunci seluruh panel admin ke non-admin, atau Anda dapat menampilkan pesan peringatan sederhana seperti ini:

01
02
03
04
05
06
07
08
09
10
11
12
13
<?php
add_action( 'admin_notices', 'admin_notices_example' );
function admin_notices_example() { 
    echo '<div class="error">
            <p>We are performing website maintenance. Please don\'t make any changes in your posts until further notice!</p>
          </div>';
}
?>

Kita menggunakan kelas “error” di sini. Jika Anda ingin border hijau (yang berarti lebih seperti pesan “sukses”), Anda dapat menggunakan kelas “updated”.

Widget WordPress adalah sistem yang sangat baik yang memungkinkan kita para pengembang untuk membuat dan mengedit bagian dari situs web kita. Dan tindakan widgets_init memungkinkan kita memodifikasi perilaku widget jika perlu.

Untuk beberapa alasan, Anda mungkin ingin menonaktifkan penggunaan widget WordPress default sama sekali. Jika itu masalahnya, cuplikan kode di bawah ini akan membantu Anda menghapus widget tersebut sepenuhnya dari instalasi WordPress Anda:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
add_action( 'widgets_init', 'widgets_init_example' );
function widgets_init_example() {
    unregister_widget( 'WP_Widget_Pages' );
    unregister_widget( 'WP_Widget_Calendar' );
    unregister_widget( 'WP_Widget_Archives' );
    unregister_widget( 'WP_Widget_Links' );
    unregister_widget( 'WP_Widget_Meta' );
    unregister_widget( 'WP_Widget_Search' );
    unregister_widget( 'WP_Widget_Text' );
    unregister_widget( 'WP_Widget_Categories' );
    unregister_widget( 'WP_Widget_Recent_Posts' );
    unregister_widget( 'WP_Widget_Recent_Comments' );
    unregister_widget( 'WP_Widget_RSS' );
    unregister_widget( 'WP_Widget_Tag_Cloud' );
}
?>

Tentu saja, Anda dapat memberikan komentar atau menghapus baris untuk mengizinkan beberapa widget dimuat.

Perlu melakukan hal-hal setiap kali pengguna dihapus? delete_user adalah orang Anda: Ini dipicu setelah pengguna dihapus.

Jika Anda memiliki situs web yang terkadang menarik orang jahat dan Anda harus sering menghapus pengguna, Anda mungkin ingin mempertimbangkan untuk memberi tahu mereka bahwa akun pengguna mereka dihapus. Cuplikan kode di bawah ini akan membantu Anda:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?php
add_action( 'delete_user', 'delete_user_example' );
function delete_user_example( $user_id ) {
    global $wpdb;
    $user_obj = get_userdata( $user_id );
    $email = $user_obj->user_email;
    $headers = 'From: ' . get_bloginfo( 'name' ) . ' <' . get_bloginfo( 'admin_email' ) . '>' . "\r\n";
    $subject = 'You are being deleted, brah';
    $message = 'Your account at ' . get_bloginfo( 'name' ) . ' has been deleted because of your totally uncool behaviors.';
    wp_mail( $email, $subject, $message, $headers );
}
?>

Jika Anda mau, Anda dapat mengganti variabel $subject dan $message dengan pesan yang lebih formal.

LEAVE A REPLY

Please enter your comment!
Please enter your name here