WordPress 4.5 veraltet get_currentuserinfo ()


7

Vor ungefähr 10 Tagen haben WordPress 4.5-Entwickler get_currentuserinfo () als steckbare Funktion abgelehnt . Leider verwendet mein Plugin sein eigenes get_currentuserinfo (), um Benutzer aus einer externen Datenbank anzumelden.

Dies erfordert ein Umschreiben dieses Bereichs des Plugins für die WP 4.5-Kompatibilität.

Welche Richtung sollten Bridge-Entwickler einschlagen, da ich nicht der einzige bin, der eine Bridge mit dieser Funktion verwendet?


Was für eine Brücke, was machst du in dieser Funktion?
— Mark Kaplun

Es ist die Login-Funktion. Es wird jetzt mithilfe von gelöst wp_get_current_user()und wird die Lösung veröffentlichen.
— LPH

Antworten:


6

Die Antwort liegt in der wp_get_current_user()steckbaren Funktion. Ich änderte einfach den Namen der Funktion , get_currentuserinfo()um wp_get_current_uesr()dann dafür gesorgt , die Erträge waren nicht boolean aber $ current_user zurück.

Dies scheint gut zu funktionieren, einschließlich Caching usw.

Hoffentlich hilft das anderen.

if ( ! function_exists( 'wp_get_current_user' ) ) :

/**
 * This replacement function will no longer work after WordPress 4.5
 * The pluggable function was deprecated in WP 4.5
 *
 * @return void|boolean
 *
 * @since 2.5.1.03
 *        Added apply_filter to match WP get_currentuserinfo()
 *
 * @since 3.0.2.01
 *        wp_get_current_user instead of get_currentuserinfo()
 */

function wp_get_current_user() {
    global $current_user;

    if ( ! empty( $current_user ) ) {
        if ( $current_user instanceof WP_User ) {
            return $current_user;
        }

        // Upgrade stdClass to WP_User
        if ( is_object( $current_user ) && isset( $current_user->ID ) ) {
            $cur_id       = $current_user->ID;
            $current_user = null;
            wp_set_current_user( $cur_id );
            return $current_user;
        }

        // $current_user has a junk value. Force to WP_User with ID 0.
        $current_user = null;
        wp_set_current_user( 0 );
        return $current_user;
    }

    if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
        wp_set_current_user( 0 );
        return $current_user;
    }

    $visitor = XenWord::getVisitor();

    $user_id = $visitor['user_id'];

    // Conditional for no XenForo user is logged in
    if ( $user_id == 0 ) {
        $current_user = null;
        wp_set_current_user( 0 );
        return $current_user;
    }

    /**
     * Filter the current user.
     *
     * The default filters use this to determine the current user from the
     * request's cookies, if available.
     *
     * Returning a value of false will effectively short-circuit setting
     * the current user.
     *
     * @since 3.9.0
     *
     * @param int|bool $user_id User ID if one has been determined, false otherwise.
     */
    $user_id = apply_filters( 'determine_current_user', false );
    if ( ! $user_id ) {
        wp_set_current_user( 0 );
        return $current_user;
    }

    $current_user = get_userdata( $user_id );

    wp_set_current_user( $user_id );

    wp_validate_auth_cookie($cookie = '', $scheme = '');

    // Check to determine if adding XF users to WP database
    XenWord_XF_Users::check_options();

    return $current_user;
}

endif;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.