Biyografi giriş alanını profil sayfasından kaldırmak veya gizlemek istiyorum. Bunu nasıl yapıyorsun? Bu sayfadan bazı iletişim yöntemlerini zaten kaldırdım, ancak biyografiden nasıl kurtulacağından emin değilim.
Biyografi giriş alanını profil sayfasından kaldırmak veya gizlemek istiyorum. Bunu nasıl yapıyorsun? Bu sayfadan bazı iletişim yöntemlerini zaten kaldırdım, ancak biyografiden nasıl kurtulacağından emin değilim.
Yanıtlar:
Özel bir kanca yoktur - WordPress'te kullanıcı yönetimi düşük bir önceliktir. Çıktı tamponlama kullanmalısınız (evet, hoş değil).
İşte bunun nasıl yapılabileceğine dair basit bir gösteri:
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;
}
}
Kodu bağımsız bir eklenti olarak indirebilirsiniz: Eklenti Kaldır Bio Box .
Parola alanları artık İletişim Bilgileri altında ... eğer beğenmediyseniz, bir başlık ekleyin stop()
- ve I18n'ye dikkat edin. ;)
IS_PROFILE_PAGE
Sabit hakkında bilmiyordum :)
<h3>
bir olduğunu <h2>
şimdi. Kodu düzelttim.
Son sınıf değişikliğinden beri bu işe yarar:
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' )
bu işe$headline = ( IS_PROFILE_PAGE ? __('About Yourself') : __('About the user' ));
<h2>
etikete girdi
Önceki yanıtlara dayanarak, Kullanıcı sayfasının istemediğim kısımlarını kaldırmak için kullanıyorum:
$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;
}
}
Hala HTML'nin yapısına güveniyor, ama benim için çalışıyor.
En basit ve en hafif çözüm, sadece görünümden gizlemek için CSS kullanmaktır.
.user-description-wrap {
display: none;
}
Function.php dosyasına aşağıdaki kodu eklerseniz, çok dilli bir sitenin tüm dilleri için biyo bölümü kaldırılır:
//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');