Jawaban yang direvisi dan diperbarui:
Kami tidak dapat menggunakan user_contactmethods
filter untuk menghapus pembungkus situs web, karena bagian ini di-hardcode dalam user-edit.php
file dan bukan bagian dari loop kontak pengguna yang dapat difilter , dihasilkan oleh:
wp_get_user_contact_methods( $profileuser )
Menyembunyikannya dengan CSS
The situs elemen berturut-turut sekarang punya itu sendiri .user-url-wrap
kelas:
<tr class="user-url-wrap">
<th><label for="url"><?php _e('Website') ?></label></th>
<td>
<input type="url" name="url" id="url"
value="<?php echo esc_attr( $profileuser->user_url ) ?>"
class="regular-text code" />
</td>
</tr>
Sebelumnya kami harus menggunakan jQuery, untuk menargetkan baris induk #url
bidang, untuk dihapus.
Tapi sekarang kita dapat dengan mudah menargetkan pembungkus situs web dan menyembunyikannya dengan CSS:
function remove_website_row_wpse_94963_css()
{
echo '<style>tr.user-url-wrap{ display: none; }</style>';
}
add_action( 'admin_head-user-edit.php', 'remove_website_row_wpse_94963_css' );
add_action( 'admin_head-profile.php', 'remove_website_row_wpse_94963_css' );
Menyembunyikan bidang lainnya
Ada kelas baris serupa:
tr.user-{field}-wrap
tersedia untuk bidang:
admin-color,
comment-shortcuts,
admin-bar-front,
user-login,
role,
super-admin,
first-name,
last-name,
nickname,
display-name,
email,
description,
pass1,
pass2,
sessions,
capabilities,
...
termasuk semua bidang dari metode kontak pengguna dinamis .
Di sini kita hanya mengganti {field}
bagian dengan nama bidang yang sesuai.
Tangkapan layar
Sebelum menghapus baris situs web:
Setelah menghapus baris situs web:
.remove()
sebagai ganti.hide()
if
kalimat dengan tes kemampuan. Ini berfungsifunctions.php
, tapi saya pikir lebih baik untuk memilikinya dalam sebuah plugin sehingga Anda tidak kehilangan itu ketika Anda mengubah tema.apply_filters( "user_{$name}_label", $desc );
user-*-wrap
bagian ;-) @BradDaltonSaya menyelesaikan masalah dengan fungsi ob_ dan DOMDocument. Ini lebih baik daripada jQuery atau CSS untuk melindungi formulir.
Saya menggunakan solusi semacam ini setiap kali ketika saya tidak dapat mengakses bagian dari konten HTML melalui sebuah hook.
sumber
Memperluas jawaban @ birgire dan membenarkan @ Patricia Walton, jika Anda hanya menambahkan
add_action('admin_head-user-edit.php','remove_website_row_wpse_94963');
itu hanya akan hilang dari halaman di mana admin mengedit profil. Untuk juga membuatnya menghilang ketika pengguna mengedit profilnya sendiri tambahkan juga
add_action('admin_head-profile.php','remove_website_row_wpse_94963');
, seperti ini:sumber
add_action('admin_head-user-new.php','remove_website_row_wpse_94963');
Kode juga tidak berfungsi untuk saya, tetapi mengubah add_action untuk mengarahkan ke profile.php berhasil.
sumber
Memperluas jawaban @ birgire, saya menulis ini ke dalam array sehingga sedikit lebih mudah dibaca:
sumber