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?

LPH
quelle
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;
LPH
quelle