WordPress函數is_user_logged_in在siteurl和wp_redirect中無法正常運作。
P粉358281574
P粉358281574 2023-07-29 00:18:33
0
1
333
<p>我嘗試使用以下程式碼修改site_URL和wp_redirect:</p> <pre class="brush:php;toolbar:false;"><?php add_filter( 'site_url', 'my_prefix_site_url', 10, 2 ); add_filter( 'wp_redirect', 'my_prefix_wp_redirect' ); function my_prefix_site_url( $url, $scheme ) { return my_prefix_modify_url( $url, $scheme ); } function my_prefix_wp_redirect( $url ) { return my_prefix_modify_url( $url, null ); } function my_prefix_modify_url( $url, $scheme = null ) { $current_url = isset( $_SERVER['PHP_SELF'] ) ? sanitize_text_field( wp_unslush( $_SERVER['PHP_SELF'] ) ) : ''; if ( ! strpos( $current_url, 'wp-admin' ) && ! is_user_logged_in() ) { return '/'; } return $url; } </pre> <p>但是遇到了以下錯誤。 </p><p>致命錯誤:未捕獲的錯誤:呼叫未定義的函數is_user_logged_in()</p><p>經過一些研究,我發現wp_redirect在呼叫pluggable.php檔案之前被呼叫,而該檔案包含is_user_logged_in()函數。因此,我繼續在我的程式碼中包含它,如下所示:</p><p><strong></strong><strong></strong><strong></ strong></p> <pre class="brush:php;toolbar:false;">if ( ! function_exists( 'is_user_logged_in' ) ) { require_once ABSPATH . WPINC . '/pluggable.php'; } </pre> <p>在包含了這個檔案之後,程式碼可以正常工作,但是一些其他插件與之衝突,因為它們無法覆蓋pluggable函數。 </p><p>簡短的問題:在載入pluggable.php之前,我該如何在wp_redirect層級驗證使用者是否已登入。 </p><p>提前感謝您的回答。 </p><p><br /></p>
P粉358281574
P粉358281574

全部回覆(1)
P粉253518620

我真的不太明白這段程式碼的實際目的是什麼,如果我理解正確的話,我認為它會破壞幾個東西,但就您字面上的問題來說:只需編寫自己的函數即可。

is_user_logged_in函數在預設版本中並不複雜:

function is_user_logged_in() {
    $user = wp_get_current_user();

    return $user->exists();
}

And wp_get_current_user is also pluggable but simple:

function wp_get_current_user() {
    return _wp_get_current_user();
}

So you'd just write this:

function custom_is_user_logged_in() {
    return _wp_get_current_user()->exists();
} 
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板