
{"id":9802,"date":"2025-04-29T08:47:57","date_gmt":"2025-04-29T01:47:57","guid":{"rendered":"https:\/\/tapchicntt.com\/?p=9802"},"modified":"2025-04-29T08:50:40","modified_gmt":"2025-04-29T01:50:40","slug":"tich-hop-dang-nhap-bang-facebook-vao-wordpress-khong-can-plugin","status":"publish","type":"post","link":"https:\/\/tapchicntt.com\/tich-hop-dang-nhap-bang-facebook-vao-wordpress-khong-can-plugin\/","title":{"rendered":"T\u00edch h\u1ee3p \u0111\u0103ng nh\u1eadp b\u1eb1ng Facebook v\u00e0o WordPress kh\u00f4ng c\u1ea7n Plugin"},"content":{"rendered":"\n<p>T\u00edch h\u1ee3p \u0111\u0103ng nh\u1eadp b\u1eb1ng Facebook v\u00e0o WordPress m\u00e0 kh\u00f4ng s\u1eed d\u1ee5ng plugin. \u0110i\u1ec1u n\u00e0y ph\u1ee9c t\u1ea1p v\u00e0 \u0111\u00f2i h\u1ecfi ki\u1ebfn th\u1ee9c v\u1ec1 l\u1eadp tr\u00ecnh PHP v\u00e0 WordPress API. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 h\u01b0\u1edbng d\u1eabn c\u00e1c b\u01b0\u1edbc c\u01a1 b\u1ea3n v\u00e0 nh\u1eefng \u0111i\u1ec3m c\u1ea7n l\u01b0u \u00fd:<\/p>\n\n\n\n<p><strong>L\u01b0u \u00fd quan tr\u1ecdng:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0110\u00e2y l\u00e0 m\u1ed9t quy tr\u00ecnh ph\u1ee9c t\u1ea1p v\u00e0 d\u1ec5 x\u1ea3y ra l\u1ed7i n\u1ebfu b\u1ea1n kh\u00f4ng c\u00f3 kinh nghi\u1ec7m l\u1eadp tr\u00ecnh PHP v\u00e0 WordPress.<\/strong><\/li>\n\n\n\n<li><strong>Vi\u1ec7c t\u1ef1 t\u00edch h\u1ee3p c\u00f3 th\u1ec3 kh\u00f3 kh\u0103n trong vi\u1ec7c b\u1ea3o tr\u00ec v\u00e0 c\u1eadp nh\u1eadt khi Facebook API c\u00f3 thay \u0111\u1ed5i.<\/strong><\/li>\n\n\n\n<li><strong>B\u1ea1n s\u1ebd c\u1ea7n t\u1ef1 x\u1eed l\u00fd c\u00e1c v\u1ea5n \u0111\u1ec1 b\u1ea3o m\u1eadt li\u00ean quan \u0111\u1ebfn vi\u1ec7c x\u00e1c th\u1ef1c ng\u01b0\u1eddi d\u00f9ng v\u00e0 l\u01b0u tr\u1eef th\u00f4ng tin.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Tuy nhi\u00ean, n\u1ebfu b\u1ea1n v\u1eabn mu\u1ed1n ti\u1ebfn h\u00e0nh, \u0111\u00e2y l\u00e0 c\u00e1c b\u01b0\u1edbc c\u01a1 b\u1ea3n:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. T\u1ea1o \u1ee8ng d\u1ee5ng Facebook:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Truy c\u1eadp trang <a href=\"https:\/\/developers.facebook.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Facebook for Developers<\/a>.<\/li>\n\n\n\n<li>\u0110\u0103ng nh\u1eadp b\u1eb1ng t\u00e0i kho\u1ea3n Facebook c\u1ee7a b\u1ea1n.<\/li>\n\n\n\n<li>Nh\u1ea5p v\u00e0o <strong>My Apps<\/strong> > <strong>Create App<\/strong>.<\/li>\n\n\n\n<li>Ch\u1ecdn <strong>Consumer<\/strong> v\u00e0 nh\u1ea5p <strong>Next<\/strong>.<\/li>\n\n\n\n<li>Nh\u1eadp <strong>Display Name<\/strong> (v\u00ed d\u1ee5: t\u00ean website WordPress c\u1ee7a b\u1ea1n).<\/li>\n\n\n\n<li>Nh\u1eadp <strong>Contact Email<\/strong>.<\/li>\n\n\n\n<li>Nh\u1ea5p v\u00e0o <strong>Create App ID<\/strong>.<\/li>\n\n\n\n<li>\u0110i \u0111\u1ebfn <strong>Settings<\/strong> > <strong>Basic<\/strong>.<\/li>\n\n\n\n<li>L\u01b0u l\u1ea1i <strong>App ID<\/strong> v\u00e0 <strong>App Secret<\/strong>.<\/li>\n\n\n\n<li>Nh\u1ea5p v\u00e0o <strong>Add Platform<\/strong> v\u00e0 ch\u1ecdn <strong>Website<\/strong>.<\/li>\n\n\n\n<li>Nh\u1eadp <strong>Site URL<\/strong> c\u1ee7a website WordPress c\u1ee7a b\u1ea1n (v\u00ed d\u1ee5: <code>https:\/\/ten_mien.com<\/code>).<\/li>\n\n\n\n<li>Nh\u1ea5p v\u00e0o <strong>Save Changes<\/strong>.<\/li>\n\n\n\n<li>Trong menu b\u00ean tr\u00e1i, nh\u1ea5p v\u00e0o <strong>Facebook Login<\/strong> > <strong>Settings<\/strong>.<\/li>\n\n\n\n<li>Trong tr\u01b0\u1eddng <strong>Valid OAuth Redirect URIs<\/strong>, h\u00e3y nh\u1eadp URL callback c\u1ee7a b\u1ea1n. \u0110\u1ed1i v\u1edbi plugin Nextend Social Login, URL n\u00e0y th\u01b0\u1eddng c\u00f3 d\u1ea1ng: <code>https:\/\/yourdomain.com\/?hauth.done=Facebook<\/code> (h\u00e3y ki\u1ec3m tra l\u1ea1i trong c\u00e0i \u0111\u1eb7t plugin sau khi c\u00e0i \u0111\u1eb7t \u0111\u1ec3 ch\u1eafc ch\u1eafn).<\/li>\n\n\n\n<li>Nh\u1ea5p v\u00e0o <strong>Save Changes<\/strong>.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. T\u1ea1o Trang Callback trong WordPress:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>B\u1ea1n c\u1ea7n t\u1ea1o m\u1ed9t trang PHP trong theme WordPress c\u1ee7a m\u00ecnh (ho\u1eb7c t\u1ea1o m\u1ed9t plugin t\u00f9y ch\u1ec9nh) \u0111\u1ec3 x\u1eed l\u00fd ph\u1ea3n h\u1ed3i t\u1eeb Facebook sau khi ng\u01b0\u1eddi d\u00f9ng \u1ee7y quy\u1ec1n. V\u00ed d\u1ee5: b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o m\u1ed9t file <code>facebook-login-callback.php<\/code> trong th\u01b0 m\u1ee5c theme hi\u1ec7n t\u1ea1i c\u1ee7a b\u1ea1n.<\/li>\n\n\n\n<li>Trong file n\u00e0y, b\u1ea1n s\u1ebd s\u1eed d\u1ee5ng Facebook PHP SDK \u0111\u1ec3 l\u1ea5y access token v\u00e0 th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. C\u00e0i \u0111\u1eb7t Facebook PHP SDK:<\/strong><\/h3>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t Facebook PHP SDK b\u1eb1ng Composer trong th\u01b0 m\u1ee5c theme ho\u1eb7c plugin t\u00f9y ch\u1ec9nh c\u1ee7a b\u1ea1n. M\u1edf terminal ho\u1eb7c command prompt, \u0111i\u1ec1u h\u01b0\u1edbng \u0111\u1ebfn th\u01b0 m\u1ee5c \u0111\u00f3 v\u00e0 ch\u1ea1y:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ncomposer require facebook\/graph-sdk\n<\/pre><\/div>\n\n\n<p>Sau \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 include file <code>autoload.php<\/code> trong code c\u1ee7a m\u00ecnh.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Vi\u1ebft Code PHP cho Trang Callback:<\/strong><\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php\n\/**\n * Template Name: Facebook Login Callback\n *\/\n\nrequire_once __DIR__ . &#039;\/vendor\/autoload.php&#039;; \/\/ \u0110\u01b0\u1eddng d\u1eabn \u0111\u1ebfn autoload.php c\u1ee7a Composer\n\n\/\/ Ki\u1ec3m tra xem c\u00f3 ph\u1ea3i l\u00e0 trang WordPress hay kh\u00f4ng\nif (!defined(&#039;ABSPATH&#039;)) {\n    exit;\n}\n\n$fb = new Facebook\\Facebook(&#x5B;\n    &#039;app_id&#039; =&gt; &#039;YOUR_APP_ID&#039;, \/\/ Thay b\u1eb1ng App ID c\u1ee7a b\u1ea1n\n    &#039;app_secret&#039; =&gt; &#039;YOUR_APP_SECRET&#039;, \/\/ Thay b\u1eb1ng App Secret c\u1ee7a b\u1ea1n\n    &#039;default_graph_version&#039; =&gt; &#039;v19.0&#039;, \/\/ Ch\u1ecdn phi\u00ean b\u1ea3n Graph API m\u1edbi nh\u1ea5t\n]);\n\n$helper = $fb-&gt;getRedirectLoginHelper();\n\ntry {\n    $accessToken = $helper-&gt;getAccessToken();\n} catch(Facebook\\Exceptions\\FacebookResponseException $e) {\n    \/\/ When Graph returns an error\n    error_log(&#039;Facebook Graph returned an error: &#039; . $e-&gt;getMessage());\n    wp_die(&#039;\u0110\u00e3 x\u1ea3y ra l\u1ed7i khi \u0111\u0103ng nh\u1eadp b\u1eb1ng Facebook.&#039;);\n    exit;\n} catch(Facebook\\Exceptions\\FacebookSDKException $e) {\n    \/\/ When validation fails or other local issues\n    error_log(&#039;Facebook SDK returned an error: &#039; . $e-&gt;getMessage());\n    wp_die(&#039;\u0110\u00e3 x\u1ea3y ra l\u1ed7i khi \u0111\u0103ng nh\u1eadp b\u1eb1ng Facebook.&#039;);\n    exit;\n}\n\nif (!isset($accessToken)) {\n    \/\/ X\u1eed l\u00fd tr\u01b0\u1eddng h\u1ee3p ng\u01b0\u1eddi d\u00f9ng t\u1eeb ch\u1ed1i \u0111\u0103ng nh\u1eadp ho\u1eb7c c\u00f3 l\u1ed7i\n    wp_die(&#039;Kh\u00f4ng th\u1ec3 l\u1ea5y access token t\u1eeb Facebook.&#039;);\n    exit;\n}\n\n\/\/ L\u1ea5y th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng t\u1eeb Facebook\ntry {\n    $response = $fb-&gt;get(&#039;\/me?fields=id,name,email&#039;, $accessToken);\n    $user = $response-&gt;getGraphUser();\n\n    $facebook_id = $user-&gt;getId();\n    $name = $user-&gt;getName();\n    $email = $user-&gt;getEmail();\n\n    \/\/ Ki\u1ec3m tra xem ng\u01b0\u1eddi d\u00f9ng Facebook n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i trong WordPress ch\u01b0a (d\u1ef1a tr\u00ean facebook_id ho\u1eb7c email)\n    $existing_user = get_users(array(\n        &#039;meta_key&#039; =&gt; &#039;facebook_id&#039;,\n        &#039;meta_value&#039; =&gt; $facebook_id,\n        &#039;number&#039; =&gt; 1,\n    ));\n\n    if ($existing_user) {\n        \/\/ \u0110\u0103ng nh\u1eadp ng\u01b0\u1eddi d\u00f9ng WordPress hi\u1ec7n c\u00f3\n        wp_set_auth_cookie($existing_user&#x5B;0]-&gt;ID, true);\n        wp_redirect(home_url()); \/\/ Chuy\u1ec3n h\u01b0\u1edbng v\u1ec1 trang ch\u1ee7\n        exit;\n    } else {\n        \/\/ Ki\u1ec3m tra xem email \u0111\u00e3 t\u1ed3n t\u1ea1i ch\u01b0a\n        if ($email) {\n            $user_by_email = get_user_by(&#039;email&#039;, $email);\n            if ($user_by_email) {\n                \/\/ Li\u00ean k\u1ebft t\u00e0i kho\u1ea3n Facebook v\u1edbi t\u00e0i kho\u1ea3n WordPress hi\u1ec7n c\u00f3\n                update_user_meta($user_by_email-&gt;ID, &#039;facebook_id&#039;, $facebook_id);\n                wp_set_auth_cookie($user_by_email-&gt;ID, true);\n                wp_redirect(home_url()); \/\/ Chuy\u1ec3n h\u01b0\u1edbng v\u1ec1 trang ch\u1ee7\n                exit;\n            }\n        }\n\n        \/\/ T\u1ea1o t\u00e0i kho\u1ea3n WordPress m\u1edbi cho ng\u01b0\u1eddi d\u00f9ng Facebook\n        $new_user_data = array(\n            &#039;user_login&#039; =&gt; sanitize_user(str_replace(&#039; &#039;, &#039;.&#039;, $name) . &#039;_&#039; . $facebook_id), \/\/ T\u1ea1o username duy nh\u1ea5t\n            &#039;user_pass&#039;  =&gt; wp_generate_password(), \/\/ T\u1ea1o m\u1eadt kh\u1ea9u ng\u1eabu nhi\u00ean\n            &#039;user_email&#039; =&gt; $email ? $email : &#039;&#039;,\n            &#039;display_name&#039; =&gt; $name,\n            &#039;first_name&#039; =&gt; &#039;&#039;, \/\/ B\u1ea1n c\u00f3 th\u1ec3 t\u00e1ch t\u00ean n\u1ebfu mu\u1ed1n\n            &#039;last_name&#039; =&gt; &#039;&#039;,\n        );\n\n        $user_id = wp_insert_user($new_user_data);\n\n        if (!is_wp_error($user_id)) {\n            \/\/ L\u01b0u Facebook ID v\u00e0o meta c\u1ee7a ng\u01b0\u1eddi d\u00f9ng\n            update_user_meta($user_id, &#039;facebook_id&#039;, $facebook_id);\n\n            \/\/ G\u1eedi email th\u00f4ng b\u00e1o t\u00e0i kho\u1ea3n (t\u00f9y ch\u1ecdn)\n            wp_new_user_notification($user_id, null, &#039;both&#039;);\n\n            \/\/ \u0110\u0103ng nh\u1eadp ng\u01b0\u1eddi d\u00f9ng m\u1edbi t\u1ea1o\n            wp_set_auth_cookie($user_id, true);\n            wp_redirect(home_url()); \/\/ Chuy\u1ec3n h\u01b0\u1edbng v\u1ec1 trang ch\u1ee7\n            exit;\n        } else {\n            error_log(&#039;L\u1ed7i khi t\u1ea1o ng\u01b0\u1eddi d\u00f9ng WordPress: &#039; . $user_id-&gt;get_error_message());\n            wp_die(&#039;\u0110\u00e3 x\u1ea3y ra l\u1ed7i khi t\u1ea1o t\u00e0i kho\u1ea3n.&#039;);\n            exit;\n        }\n    }\n\n} catch(Facebook\\Exceptions\\FacebookResponseException $e) {\n    error_log(&#039;Facebook Graph returned an error: &#039; . $e-&gt;getMessage());\n    wp_die(&#039;\u0110\u00e3 x\u1ea3y ra l\u1ed7i khi l\u1ea5y th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng t\u1eeb Facebook.&#039;);\n    exit;\n} catch(Facebook\\Exceptions\\FacebookSDKException $e) {\n    error_log(&#039;Facebook SDK returned an error: &#039; . $e-&gt;getMessage());\n    wp_die(&#039;\u0110\u00e3 x\u1ea3y ra l\u1ed7i khi t\u01b0\u01a1ng t\u00e1c v\u1edbi Facebook SDK.&#039;);\n    exit;\n}\n\nget_header(); \/\/ N\u1ebfu b\u1ea1n mu\u1ed1n hi\u1ec3n th\u1ecb giao di\u1ec7n WordPress\n?&gt;\n\n&lt;div id=&quot;primary&quot; class=&quot;content-area&quot;&gt;\n    &lt;main id=&quot;main&quot; class=&quot;site-main&quot;&gt;\n        &lt;h1&gt;\u0110ang x\u1eed l\u00fd \u0111\u0103ng nh\u1eadp Facebook...&lt;\/h1&gt;\n        &lt;p&gt;B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c chuy\u1ec3n h\u01b0\u1edbng sau gi\u00e2y l\u00e1t.&lt;\/p&gt;\n    &lt;\/main&gt;&lt;\/div&gt;&lt;?php\nget_sidebar(); \/\/ N\u1ebfu b\u1ea1n mu\u1ed1n hi\u1ec3n th\u1ecb sidebar\nget_footer(); \/\/ N\u1ebfu b\u1ea1n mu\u1ed1n hi\u1ec3n th\u1ecb footer\n?&gt;\n<\/pre><\/div>\n\n\n<p><strong>Gi\u1ea3i th\u00edch code callback:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Include file <code>autoload.php<\/code> c\u1ee7a Composer.<\/li>\n\n\n\n<li>Kh\u1edfi t\u1ea1o \u0111\u1ed1i t\u01b0\u1ee3ng <code>Facebook\\Facebook<\/code>.<\/li>\n\n\n\n<li>L\u1ea5y <code>accessToken<\/code> t\u1eeb ph\u1ea3n h\u1ed3i c\u1ee7a Facebook.<\/li>\n\n\n\n<li>N\u1ebfu c\u00f3 l\u1ed7i khi l\u1ea5y <code>accessToken<\/code>, hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o l\u1ed7i.<\/li>\n\n\n\n<li>S\u1eed d\u1ee5ng <code>accessToken<\/code> \u0111\u1ec3 l\u1ea5y th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng (<code>id<\/code>, <code>name<\/code>, <code>email<\/code>).<\/li>\n\n\n\n<li>Ki\u1ec3m tra xem ng\u01b0\u1eddi d\u00f9ng Facebook \u0111\u00e3 t\u1ed3n t\u1ea1i trong WordPress ch\u01b0a d\u1ef1a tr\u00ean <code>facebook_id<\/code>.<\/li>\n\n\n\n<li>N\u1ebfu t\u1ed3n t\u1ea1i, \u0111\u0103ng nh\u1eadp ng\u01b0\u1eddi d\u00f9ng WordPress.<\/li>\n\n\n\n<li>N\u1ebfu ch\u01b0a t\u1ed3n t\u1ea1i, ki\u1ec3m tra xem email \u0111\u00e3 t\u1ed3n t\u1ea1i ch\u01b0a v\u00e0 li\u00ean k\u1ebft (n\u1ebfu mu\u1ed1n) ho\u1eb7c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n WordPress m\u1edbi.<\/li>\n\n\n\n<li>\u0110\u0103ng nh\u1eadp ng\u01b0\u1eddi d\u00f9ng WordPress m\u1edbi t\u1ea1o.<\/li>\n\n\n\n<li>Chuy\u1ec3n h\u01b0\u1edbng ng\u01b0\u1eddi d\u00f9ng v\u1ec1 trang ch\u1ee7.<\/li>\n\n\n\n<li>X\u1eed l\u00fd c\u00e1c tr\u01b0\u1eddng h\u1ee3p l\u1ed7i kh\u00e1c.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. T\u1ea1o Li\u00ean k\u1ebft \u0110\u0103ng nh\u1eadp Facebook:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>B\u1ea1n c\u1ea7n t\u1ea1o m\u1ed9t li\u00ean k\u1ebft tr\u00ean website c\u1ee7a m\u00ecnh \u0111\u1ec3 ng\u01b0\u1eddi d\u00f9ng b\u1eaft \u0111\u1ea7u qu\u00e1 tr\u00ecnh \u0111\u0103ng nh\u1eadp Facebook. B\u1ea1n c\u00f3 th\u1ec3 th\u00eam li\u00ean k\u1ebft n\u00e0y v\u00e0o trang \u0111\u0103ng nh\u1eadp WordPress (<code>wp-login.php<\/code>), sidebar, ho\u1eb7c b\u1ea5t k\u1ef3 v\u1ecb tr\u00ed n\u00e0o b\u1ea1n mu\u1ed1n.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>B\u1ea1n c\u00f3 th\u1ec3 \u0111\u1eb7t \u0111o\u1ea1n code n\u00e0y v\u00e0o file <code>wp-login.php<\/code> (c\u1ea9n th\u1eadn khi ch\u1ec9nh s\u1eeda file core), ho\u1eb7c t\u1ea1o m\u1ed9t shortcode \u0111\u1ec3 ch\u00e8n v\u00e0o c\u00e1c trang\/b\u00e0i vi\u1ebft.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php\n$fb = new Facebook\\Facebook(&#x5B;\n    &#039;app_id&#039; =&gt; &#039;YOUR_APP_ID&#039;, \/\/ Thay b\u1eb1ng App ID c\u1ee7a b\u1ea1n\n    &#039;app_secret&#039; =&gt; &#039;YOUR_APP_SECRET&#039;, \/\/ Thay b\u1eb1ng App Secret c\u1ee7a b\u1ea1n\n    &#039;default_graph_version&#039; =&gt; &#039;v19.0&#039;, \/\/ Ch\u1ecdn phi\u00ean b\u1ea3n Graph API m\u1edbi nh\u1ea5t\n]);\n\n$helper = $fb-&gt;getRedirectLoginHelper();\n$permissions = &#x5B;&#039;email&#039;]; \/\/ C\u00e1c quy\u1ec1n b\u1ea1n mu\u1ed1n y\u00eau c\u1ea7u\n$loginUrl = $helper-&gt;getLoginUrl(&#039;https:\/\/yourdomain.com\/facebook-login-callback&#039;, $permissions); \/\/ Thay b\u1eb1ng URL callback c\u1ee7a b\u1ea1n\n\necho &#039;&lt;a href=&quot;&#039; . esc_url($loginUrl) . &#039;&quot;&gt;\u0110\u0103ng nh\u1eadp b\u1eb1ng Facebook&lt;\/a&gt;&#039;;\n?&gt;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Th\u00eam tr\u01b0\u1eddng <code>facebook_id<\/code> v\u00e0o c\u01a1 s\u1edf d\u1eef li\u1ec7u WordPress:<\/strong><\/h3>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng <code>update_user_meta()<\/code> \u0111\u1ec3 l\u01b0u <code>facebook_id<\/code> c\u1ee7a ng\u01b0\u1eddi d\u00f9ng v\u00e0o b\u1ea3ng <code>wp_usermeta<\/code>. \u0110i\u1ec1u n\u00e0y gi\u00fap b\u1ea1n li\u00ean k\u1ebft t\u00e0i kho\u1ea3n Facebook v\u1edbi t\u00e0i kho\u1ea3n WordPress.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7. X\u1eed l\u00fd \u0110\u0103ng xu\u1ea5t (t\u00f9y ch\u1ecdn):<\/strong><\/h3>\n\n\n\n<p>N\u1ebfu b\u1ea1n mu\u1ed1n cung c\u1ea5p t\u00f9y ch\u1ecdn \u0111\u0103ng xu\u1ea5t ri\u00eang cho ng\u01b0\u1eddi d\u00f9ng Facebook, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u01a1n gi\u1ea3n l\u00e0 s\u1eed d\u1ee5ng h\u00e0m <code>wp_logout()<\/code> c\u1ee7a WordPress \u0111\u1ec3 x\u00f3a cookie x\u00e1c th\u1ef1c.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>R\u1ee7i ro v\u00e0 C\u00e2n nh\u1eafc:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>B\u1ea3o m\u1eadt:<\/strong> B\u1ea1n c\u1ea7n \u0111\u1ea3m b\u1ea3o r\u1eb1ng quy tr\u00ecnh x\u00e1c th\u1ef1c v\u00e0 l\u01b0u tr\u1eef th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n m\u1ed9t c\u00e1ch an to\u00e0n.<\/li>\n\n\n\n<li><strong>B\u1ea3o tr\u00ec:<\/strong> Khi Facebook API c\u00f3 thay \u0111\u1ed5i, b\u1ea1n s\u1ebd c\u1ea7n c\u1eadp nh\u1eadt code c\u1ee7a m\u00ecnh \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh t\u01b0\u01a1ng th\u00edch.<\/li>\n\n\n\n<li><strong>T\u01b0\u01a1ng th\u00edch theme\/plugin:<\/strong> Vi\u1ec7c t\u1ef1 t\u00edch h\u1ee3p c\u00f3 th\u1ec3 g\u00e2y ra xung \u0111\u1ed9t v\u1edbi c\u00e1c theme ho\u1eb7c plugin kh\u00e1c tr\u00ean website c\u1ee7a b\u1ea1n.<\/li>\n\n\n\n<li><strong>Th\u1eddi gian v\u00e0 c\u00f4ng s\u1ee9c:<\/strong> Vi\u1ec7c t\u1ef1 t\u00edch h\u1ee3p \u0111\u00f2i h\u1ecfi nhi\u1ec1u th\u1eddi gian v\u00e0 c\u00f4ng s\u1ee9c h\u01a1n so v\u1edbi vi\u1ec7c s\u1eed d\u1ee5ng plugin.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>L\u1eddi khuy\u00ean:<\/strong><\/h3>\n\n\n\n<p>N\u1ebfu b\u1ea1n kh\u00f4ng c\u00f3 kinh nghi\u1ec7m l\u1eadp tr\u00ecnh PHP v\u00e0 WordPress chuy\u00ean s\u00e2u, vi\u1ec7c s\u1eed d\u1ee5ng m\u1ed9t plugin \u0111\u00e1ng tin c\u1eady l\u00e0 l\u1ef1a ch\u1ecdn an to\u00e0n v\u00e0 hi\u1ec7u qu\u1ea3 h\u01a1n. C\u00e1c plugin n\u00e0y th\u01b0\u1eddng \u0111\u00e3 x\u1eed l\u00fd c\u00e1c v\u1ea5n \u0111\u1ec1 b\u1ea3o m\u1eadt, c\u1eadp nh\u1eadt API v\u00e0 cung c\u1ea5p giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng th\u00e2n thi\u1ec7n \u0111\u1ec3 c\u1ea5u h\u00ecnh.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, n\u1ebfu b\u1ea1n mu\u1ed1n h\u1ecdc h\u1ecfi v\u00e0 c\u00f3 \u0111\u1ee7 ki\u1ebfn th\u1ee9c, vi\u1ec7c t\u1ef1 t\u00edch h\u1ee3p l\u00e0 m\u1ed9t th\u1eed th\u00e1ch th\u00fa v\u1ecb. H\u00e3y \u0111\u1ea3m b\u1ea3o b\u1ea1n hi\u1ec3u r\u00f5 c\u00e1c kh\u00e1i ni\u1ec7m v\u1ec1 OAuth 2.0, Facebook API v\u00e0 WordPress API tr\u01b0\u1edbc khi b\u1eaft \u0111\u1ea7u.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00edch h\u1ee3p \u0111\u0103ng nh\u1eadp b\u1eb1ng Facebook v\u00e0o WordPress m\u00e0 kh\u00f4ng s\u1eed d\u1ee5ng plugin. \u0110i\u1ec1u n\u00e0y ph\u1ee9c t\u1ea1p v\u00e0 \u0111\u00f2i h\u1ecfi [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":9804,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[143],"tags":[],"class_list":["post-9802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-thu-thuat-wordpress"],"views":670,"_links":{"self":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/9802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/comments?post=9802"}],"version-history":[{"count":8,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/9802\/revisions"}],"predecessor-version":[{"id":9812,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/posts\/9802\/revisions\/9812"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/media\/9804"}],"wp:attachment":[{"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/media?parent=9802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/categories?post=9802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tapchicntt.com\/rest-api\/wp\/v2\/tags?post=9802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}