কীভাবে ব্যবহারকারীর প্রোফাইল অ্যাডমিন পৃষ্ঠা থেকে জীবনী সরিয়ে নেওয়া যায়


14

আমি প্রোফাইল পৃষ্ঠা থেকে জীবনী ইনপুট ক্ষেত্রটি সরিয়ে বা আড়াল করতে চাই। তুমি এটা কিভাবে করো? আমি ইতিমধ্যে এই পৃষ্ঠা থেকে কিছু যোগাযোগের পদ্ধতি অপসারণ করেছি, তবে জীবনী থেকে কীভাবে মুক্তি পাবেন তা নিশ্চিত নই।

উত্তর:


21

কোনও ডেডিকেটেড হুক নেই - ওয়ার্ডপ্রেসে ব্যবহারকারী পরিচালনা হ'ল একটি কম অগ্রাধিকার। আপনাকে আউটপুট বাফারিং ব্যবহার করতে হবে (হ্যাঁ, সুন্দর নয়)।

এটি কীভাবে করা যায় তা এখানে একটি সাধারণ বিক্ষোভ রয়েছে:

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;
    }
}

আপনি কোডটি স্ট্যান্ড্যালোন প্লাগইন হিসাবে ডাউনলোড করতে পারেন: প্লাগইন সরান বায়ো বক্স

আগে

এখানে চিত্র বর্ণনা লিখুন

পরে

এখানে চিত্র বর্ণনা লিখুন

পাসওয়ার্ড ক্ষেত্রগুলি এখন যোগাযোগের তথ্যের অধীনে … আপনি যদি এটি পছন্দ না করেন তবে একটি শিরোনাম যুক্ত করুন stop()- এবং I18n এর জন্য যত্ন নিন। ;)


এটি আমার পক্ষে খুব দরকারী এবং আমি পরে যা করেছি। ধন্যবাদ!
মার্ক

1
খুশী হলাম। IS_PROFILE_PAGEধ্রুবক সম্পর্কে জানা নেই :)
আন ট্রান

এটি 4.6.1 এর সাথে কাজ করে না
Realtebo

@realtebo হ্যাঁ, <h3>একটি হল <h2>এখন। আমি কোডটি ঠিক করেছি।
ফুসিয়া

7

যেহেতু সাম্প্রতিক শ্রেণীর পরিবর্তনগুলি এই কাজ করে:

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;
    }
}

1
আমি কেবল $headline = __( IS_PROFILE_PAGE ? 'About Yourself' : 'About the user' )এটিকে $headline = ( IS_PROFILE_PAGE ? __('About Yourself') : __('About the user' ));
এটিতে

এছাড়াও: শিরোনামটি এখন একটি <h2>ট্যাগে রয়েছে
রিয়েলটেবো

2

পূর্ববর্তী উত্তরের উপর ভিত্তি করে তৈরি করা, আমি চাই না এমন ব্যবহারকারী পৃষ্ঠার অংশগুলি অপসারণ করতে এখানে ব্যবহার করছি:

$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 এর কাঠামোর উপর নির্ভরশীল, তবে এটি আমার পক্ষে কাজ করে।


আমি কীভাবে ব্যবহারকারীর নতুন ওয়েবসাইট থেকে অপসারণ করতে পারি? আমি পৃষ্ঠাটিকে $ পৃষ্ঠাগুলিতে প্রতিক্রিয়াতে যুক্ত করেছি এবং একটি সারি হিসাবে ওয়েবসাইট সরিয়েছি, তবে এটি এখনও আছে।
জেসন

2

সবচেয়ে সহজ এবং সর্বাধিক লাইটওয়েট সমাধান হ'ল সিএসএস ব্যবহার করা কেবল এটি দেখার থেকে আড়াল করার জন্য।

.user-description-wrap {
   display: none;
}

0

যদি আপনি নীচে কোডগুলি আপনার ফাংশন.এফপি ফাইলটিতে যুক্ত করেন তবে এটি একটি বহু-ভাষার সাইটের সমস্ত ভাষার বায়ো বিভাগ সরিয়ে ফেলবে:

//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');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.