ฉันต้องการลบหรือซ่อนฟิลด์ป้อนข้อมูลชีวประวัติจากหน้าโปรไฟล์ คุณจะทำสิ่งนี้ได้อย่างไร ฉันได้ลบวิธีการติดต่อบางส่วนจากหน้านี้แล้ว แต่ฉันไม่แน่ใจว่าจะกำจัดชีวประวัติได้อย่างไร
ฉันต้องการลบหรือซ่อนฟิลด์ป้อนข้อมูลชีวประวัติจากหน้าโปรไฟล์ คุณจะทำสิ่งนี้ได้อย่างไร ฉันได้ลบวิธีการติดต่อบางส่วนจากหน้านี้แล้ว แต่ฉันไม่แน่ใจว่าจะกำจัดชีวประวัติได้อย่างไร
คำตอบ:
ไม่มีเบ็ดเฉพาะการจัดการผู้ใช้มีความสำคัญต่ำใน WordPress คุณต้องใช้บัฟเฟอร์ผลลัพธ์ (ใช่ไม่ดี)
นี่คือตัวอย่างง่ายๆที่สามารถทำได้:
add_action( 'personal_options', array ( 'T5_Hide_Profile_Bio_Box', 'start' ) );
/**
* Captures the part with the biobox in an output buffer and removes it.
*
* @author Thomas Scholz, <info@toscho.de>
*
*/
class T5_Hide_Profile_Bio_Box
{
/**
* Called on 'personal_options'.
*
* @return void
*/
public static function start()
{
$action = ( IS_PROFILE_PAGE ? 'show' : 'edit' ) . '_user_profile';
add_action( $action, array ( __CLASS__, 'stop' ) );
ob_start();
}
/**
* Strips the bio box from the buffered content.
*
* @return void
*/
public static function stop()
{
$html = ob_get_contents();
ob_end_clean();
// remove the headline
$headline = __( IS_PROFILE_PAGE ? 'About Yourself' : 'About the user' );
$html = str_replace( '<h2>' . $headline . '</h2>', '', $html );
// remove the table row
$html = preg_replace( '~<tr>\s*<th><label for="description".*</tr>~imsUu', '', $html );
print $html;
}
}
คุณสามารถดาวน์โหลดรหัสเป็นปลั๊กอินโลน: ปลั๊กอินลบ Bio กล่อง
ขณะนี้ฟิลด์รหัสผ่านอยู่ภายใต้ข้อมูลติดต่อ …หากคุณไม่ชอบให้เพิ่มหัวเรื่องในstop()
- และดูแล I18n ;)
IS_PROFILE_PAGE
คง :)
<h3>
เป็น<h2>
ตอนนี้ ฉันแก้ไขรหัสแล้ว
ตั้งแต่ชั้นเรียนล่าสุดเปลี่ยนงานนี้:
add_action( 'personal_options', array ( 'T5_Hide_Profile_Bio_Box', 'start' ) );
/**
* Captures the part with the biobox in an output buffer and removes it.
*
* @author Thomas Scholz, <info@toscho.de>
*
*/
class T5_Hide_Profile_Bio_Box
{
/**
* Called on 'personal_options'.
*
* @return void
*/
public static function start()
{
$action = ( IS_PROFILE_PAGE ? 'show' : 'edit' ) . '_user_profile';
add_action( $action, array ( __CLASS__, 'stop' ) );
ob_start();
}
/**
* Strips the bio box from the buffered content.
*
* @return void
*/
public static function stop()
{
$html = ob_get_contents();
ob_end_clean();
// remove the headline
$headline = __( IS_PROFILE_PAGE ? 'About Yourself' : 'About the user' );
$html = str_replace( '<h3>' . $headline . '</h3>', '', $html );
// remove the table row
$html = preg_replace( '~<tr class="user-description-wrap">\s*<th><label for="description".*</tr>~imsUu', '', $html );
print $html;
}
}
$headline = __( IS_PROFILE_PAGE ? 'About Yourself' : 'About the user' )
เป็นจริง$headline = ( IS_PROFILE_PAGE ? __('About Yourself') : __('About the user' ));
<h2>
แท็ก
จากคำตอบก่อนหน้านี่คือสิ่งที่ฉันใช้เพื่อลบส่วนต่างๆของหน้าผู้ใช้ที่ฉันไม่ต้องการ:
$pagesToAffect = [
'/wp-admin/user-edit.php',
'/wp-admin/profile.php'
];
if (isset($PHP_SELF) && in_array($PHP_SELF, $pagesToAffect)) {
add_action('admin_head', [UserProfileCleaner::class, 'start']);
add_action('admin_footer', [UserProfileCleaner::class, 'finish']);
add_filter('user_contactmethods',[UserProfileCleaner::class, 'hideInstantMessaging'],10000,1);
}
class UserProfileCleaner {
public static function start() {
ob_start(function($buffer) {
// Personal Options
if (!IS_PROFILE_PAGE) {
$startHeading = 'Personal Options';
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($startHeading))."</\\1 ?>@is";
preg_match($pattern, $buffer, $start, PREG_OFFSET_CAPTURE);
$endHeading = 'Name';
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($endHeading))."</\\1 ?>@is";
preg_match($pattern, $buffer, $end, PREG_OFFSET_CAPTURE);
if (isset($start[0][1]) && isset($end[0][1]) && $start[0][1]<$end[0][1]) {
$buffer = substr($buffer, 0, $start[0][1]).substr($buffer,$end[0][1]);
}
}
$buffer = self::removeSectionHeading($buffer, 'Name');
$buffer = self::removeSectionHeading($buffer, 'Contact Info');
$buffer = self::removeSectionHeading($buffer, 'Additional Capabilities');
$buffer = self::removeSectionRow($buffer, 'Capabilities');
$buffer = self::removeSectionHeading($buffer, 'Forums');
// About / Bio
$heading = IS_PROFILE_PAGE ? 'About Yourself' : 'About the user';
$buffer = self::removeStandardSection($buffer, $heading);
// Yoast
$heading = 'Yoast SEO Settings';
$buffer = self::removeStandardSection($buffer, $heading);
$heading = 'Memberships';
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($heading))."</\\1 ?>.*?</p>@is";
$buffer = preg_replace($pattern, "", $buffer, 1);
return $buffer;
});
}
private static function removeStandardSection($buffer, $heading) {
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($heading))."</\\1 ?>.*?</table>@is";
return preg_replace($pattern, "", $buffer, 1);
}
private static function removeSectionHeading($buffer, $heading) {
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($heading))."</\\1 ?>@is";
return preg_replace($pattern, "", $buffer, 1);
}
function removeSectionRow($buffer, $heading) {
$pattern = "@<tr ?[^>]*?>[^<]*?<th ?[^>]*?>[^<]*?".preg_quote(_x($heading))."[^<]*?</th ?[^>]*?>.*?</tr ?>@is";
return preg_replace($pattern, "", $buffer, 1);
}
public static function finish() {
ob_end_flush();
}
public static function hideInstantMessaging( $contactmethods ) {
unset($contactmethods['googleplus']);
unset($contactmethods['twitter']);
unset($contactmethods['facebook']);
return $contactmethods;
}
}
มันยังคงพึ่งพาโครงสร้างของ HTML แต่ใช้งานได้สำหรับฉัน
ทางออกที่ง่ายและเบาที่สุดคือการใช้ CSS เพื่อซ่อนมันจากมุมมอง
.user-description-wrap {
display: none;
}
หากคุณเพิ่มรหัสด้านล่างลงในไฟล์ functions.php ของคุณมันจะลบส่วนไบโอสำหรับทุกภาษาของเว็บไซต์หลายภาษา:
//remove the bio
function remove_plain_bio($buffer) {
$titles = array('#<h3>'._x('About Yourself').'</h3>#','#<h3>'._x('About the user').'</h3>#');
$buffer=preg_replace($titles,'<h3>'._x('Password').'</h3>',$buffer,1);
$biotable='#<h3>'._x('Password').'</h3>.+?<table.+?/tr>#s';
$buffer=preg_replace($biotable,'<h3>'._x('Password').'</h3> <table class="form-table">',$buffer,1);
return $buffer;
}
function profile_admin_buffer_start() { ob_start("remove_plain_bio"); }
function profile_admin_buffer_end() { ob_end_flush(); }
add_action('admin_head', 'profile_admin_buffer_start');
add_action('admin_footer', 'profile_admin_buffer_end');