久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

第一節:Vue3 開發WordPress設置選項 - PHP傳數據給JS

本節重點:在 WordPress 中將 PHP 準備好的數據傳給 JS 文件,并在 JS 中將傳來的值打印瀏覽器控制臺中

書接上回,我們使用 Vue3 技術撰寫前端,為了與后臺進行交互,包括從前端加載的開始獲取初始設置數據等,都需要從 PHP 中獲取數據,但我們開發的項目打包后,只有 JS 文件,因此,開發的第一件事就是解決 PHP 傳值給 JS 的問題。

為了方便我們的功能實現,我們開發一個簡單的插件。簡單介紹下軟件環境,都是三平臺通用的,大家能都用

目標

通過 PHP,將所需數據傳給 JS 文件,并在 JS 文件中打印出來。

準備環境

VS Code 下載后安裝使用即可。
Local 下載安裝后,可點擊左下角“+”按鈕,一路默認選擇,填寫站點名稱即可.
創建后,如下所示,

第一節:Vue3 開發WordPress設置選項 - PHP傳數據給JS

左側列表選擇自己創建的站點,

  • 點擊 Go to site folder 進入站點文件夾,選擇 app → public 即可看到站點根目錄文件
  • 點擊 WP Admin 即可進入站點后臺

我們先在 WordPress 站點的wp-content/plugins目錄下新建文件夾 vue-spa ,我們在這里撰寫代碼,實現我們的功能。

準備插件信息并啟用

現在,我們在 vue-spa 文件夾下添加新文件“vue-spa.php”文件,寫入以下內容

//vue-spa.php
<?php
/*
Plugin Name: Vue - SPA 
Plugin URI: http://www.kartiktrivedi.com
Description: 將vue構建的頁面嵌入WordPress 中并產生交互
Author: Muze
Author URI: http://www.kartiktrivedi.com
Version: 1.0.0
*/

分別代表:

  • 插件名
  • 插件介紹網址
  • 插件功能介紹
  • 插件作者
  • 插件作者介紹網站
  • 插件版本

現在,我們的插件準備好了,點擊 WP Admin 即可進入站點后臺,進入插件頁面,選擇 Vue - SPA 插件啟用吧

第一節:Vue3 開發WordPress設置選項 - PHP傳數據給JS

準備菜單

為了驗證我們準備的數據,需要一個地方來展示,方便驗證,就做個菜單出來。承接上文,添加以下代碼

//創建一個菜單
function vuespa_create_menu_page()
{
    add_menu_page(
        'VueSpa選項',                   // 此菜單對應頁面上顯示的標題
        'VueSpa',                      // 要為此實際菜單項顯示的文本
        'administrator',               // 哪種類型的用戶可以看到此菜單
        'vuespa_id',                   //  此菜單項的唯一ID(即段塞)
        'vuespa_menu_page_display',    // 呈現此頁面的菜單時要調用的函數的名稱
        'dashicons-admin-customizer',  //圖標 - 默認圖標
        '500.1',                       //位置
    );
} // end vuespa_create_menu_page 
add_action('admin_menu', 'vuespa_create_menu_page');
//菜單回調 - 展示的內容

function vuespa_menu_page_display()
{
?>
    <!--在默認WordPress“包裝”容器中創建標題-->
    <div class="wrap">
        <!--標題-->
        <h2><?php echo esc_html(get_admin_page_title()); ?></h2>
        <!--提供Vue掛載點-->
        <div id="vuespa">此內容將在掛載Vue后被替換</div>
    </div>
<?php

} // vuespa_menu_page_display

代碼的用途我放注釋了,大家可以看看,主要作用是,在 WordPress 后臺創建一個菜單,并展示一段話。

  • 其中的 class 樣式class="wrap"是 WordPress 自帶的,有利于頁面的一致性。
  • 其中的圖標,可在本節的開始提供的網址中獲取,是 WordPress 的自帶圖標

現在,我們刷新 WordPress 后臺,可以找到 VueSpa 菜單,點擊打開即可。

若沒有此菜單,請檢查是否啟用了 Vue - SPA 插件

第一節:Vue3 開發WordPress設置選項 - PHP傳數據給JS

準備JS文件接收數據

為了確定 PHP 傳給 JS 的數據是成功的,我們需要在 JS 文件中進行驗證。

我們在插件文件夾下新建文件夾 vite 和 dist 文件夾,并新建 index.js 和index.css 文件,結構類似這樣

vue-spa/vite/dist/index.js
vue-spa/vite/dist/index.css

index.js 寫入以下代碼

//vite/dist/index.js
alert("我加載啦 - Npcink")

index.css 暫時不寫

現在,我們需要在 vue-spa.php 文件中載入 index.js 文件,我們在 vue-spa.php 文件中添加以下代碼

//載入所需 JS 和 CSS 資源
function vuespa_load_vues($hook)
{
    //判斷當前頁面是否是指定頁面,是則繼續加載
    if ('toplevel_page_vuespa_id' != $hook) {
        return;
    }
    //版本號
    $ver = '52';
    //加載到頁面頂部
    wp_enqueue_style('vite', plugin_dir_url(__FILE__) . 'vite/dist/index.css', array(), $ver, false);
    wp_enqueue_script('vite', plugin_dir_url(__FILE__) . 'vite/dist/index.js', array(), $ver, false);

}
//樣式加載到后臺
add_action('admin_enqueue_scripts', 'vuespa_load_vues');

現在,我們只有打開 VueSpa 菜單才會有彈窗。此時,我們就加載了 JS 文件。

準備數據

我們通過PHP準備數據,在JS文件中通過彈窗顯示出來。

我們在 vue-spa.php 頁面底部添加以下代碼準備數據

//準備待傳輸的數據
function vuespa_data()
{
    $person = [
        "str" => "Hello, world!",
        "num" => 25,
        "city" => [1, 2, 3, 4, 5],
    ];
    return $person;
}

為了看到數據是否做好,我們修改下菜單回調函數 vuespa_menu_page_display() ,先用PHP將數據展示看看

//菜單回調 - 展示的內容
function vuespa_menu_page_display()
{
?>
    <!--在默認WordPress“包裝”容器中創建標題-->
    <div class="wrap">
        <!--標題-->
        <h2><?php echo esc_html(get_admin_page_title()); ?></h2>
        <!--提供Vue掛載點-->
        <div id="vuespa">此內容將在掛載Vue后被替換</div>
    </div>
<?php

//展示準備的數據
    echo "<pre>";
    print_r(vuespa_data());
    echo "</pre>";
} // vuespa_menu_page_display

效果如下:

第一節:Vue3 開發WordPress設置選項 - PHP傳數據給JS

數據展示正常,

傳遞數據

傳遞數據,我們要用到 wp_localize_script()函數,修改我們載入JS的函數 vuespa_load_vues()

//載入所需 JS 和 CSS 資源 并傳遞數據
function vuespa_load_vues($hook)
{
    //判斷當前頁面是否是指定頁面,是則繼續加載
    if ('toplevel_page_vuespa_id' != $hook) {
        return;
    }
    //版本號
    $ver = '52';
    //加載到頁面頂部
    wp_enqueue_style('vite', plugin_dir_url(__FILE__) . 'vite/dist/index.css', array(), $ver, false);
    wp_enqueue_script('vite', plugin_dir_url(__FILE__) . 'vite/dist/index.js', array(), $ver, false);

    $pf_api_translation_array = array(
        'route' => esc_url_raw(rest_url()),     //路由
        'nonce' => wp_create_nonce('wp_rest'), //驗證標記
        'data' => vuespa_data(),               //自定義數據
    );
    wp_localize_script('vite', 'dataLocal', $pf_api_translation_array); //傳給vite項目
}
//樣式加載到后臺
add_action('admin_enqueue_scripts', 'vuespa_load_vues');

再修改我們的 index.js 文件,將拿到的數據打印出來

//vite/dist/index.js
console.table(dataLocal);

在WordPress 中,點擊VueSpa菜單,使用瀏覽器的開發者工具,即可在控制臺中看到傳遞的數據

第一節:Vue3 開發WordPress設置選項 - PHP傳數據給JS

其中,各個數據的用途可見注釋

    'route' => esc_url_raw(rest_url()),     //路由
    'nonce' => wp_create_nonce('wp_rest'), //驗證標記
    'data' => vuespa_data(),               //自定義數據
   nonce: "82711b7680"
   route: "http://localhost:10004/wp-json/"
  • 我們通過傳來的路由,知道要發出 POST 請求的網址
  • 我們通過傳來的驗證標記,在發出 POST 請求時進行身份驗證
  • 我們通過傳來的data數據,在 JS 文件中進行進一步的操作

補充

vue-spa.php 本節完整代碼

<?php
/*
Plugin Name: Vue - SPA 
Plugin URI: http://www.kartiktrivedi.com
Description: 將vue構建的頁面嵌入WordPress 中并產生交互
Author: Muze
Author URI: http://www.kartiktrivedi.com
Version: 1.0.0
*/


//創建一個菜單
function vuespa_create_menu_page()
{
    add_menu_page(
        'VueSpa選項',                   // 此菜單對應頁面上顯示的標題
        'VueSpa',                      // 要為此實際菜單項顯示的文本
        'administrator',               // 哪種類型的用戶可以看到此菜單
        'vuespa_id',                   //  此菜單項的唯一ID(即段塞)
        'vuespa_menu_page_display',    // 呈現此頁面的菜單時要調用的函數的名稱
        'dashicons-admin-customizer',  //圖標 - 默認圖標
        '500.1',                       //位置
    );
} // end vuespa_create_menu_page 
add_action('admin_menu', 'vuespa_create_menu_page');

//菜單回調 - 展示的內容
function vuespa_menu_page_display()
{
?>
    <!--在默認WordPress“包裝”容器中創建標題-->
    <div class="wrap">
        <!--標題-->
        <h2><?php echo esc_html(get_admin_page_title()); ?></h2>
        <!--提供Vue掛載點-->
        <div id="vuespa">此內容將在掛載Vue后被替換</div>
    </div>
<?php

    //展示準備的數據
    echo "<pre>";
    print_r(vuespa_data());
    echo "</pre>";
} // vuespa_menu_page_display



//載入所需 JS 和 CSS 資源 并傳遞數據
function vuespa_load_vues($hook)
{
    //判斷當前頁面是否是指定頁面,是則繼續加載
    if ('toplevel_page_vuespa_id' != $hook) {
        return;
    }
    //版本號
    $ver = '52';
    //加載到頁面頂部
    wp_enqueue_style('vite', plugin_dir_url(__FILE__) . 'vite/dist/index.css', array(), $ver, false);
    wp_enqueue_script('vite', plugin_dir_url(__FILE__) . 'vite/dist/index.js', array(), $ver, false);

    $pf_api_translation_array = array(
        'route' => esc_url_raw(rest_url()),     //路由
        'nonce' => wp_create_nonce('wp_rest'), //驗證標記
        'data' => vuespa_data(),               //自定義數據
    );
    wp_localize_script('vite', 'dataLocal', $pf_api_translation_array); //傳給vite項目
}
//樣式加載到后臺
add_action('admin_enqueue_scripts', 'vuespa_load_vues');


//準備待傳輸的數據
function vuespa_data()
{
    $person = [
        "str" => "Hello, world! - Npcink",
        "num" => 25,
        "city" => [1, 2, 3, 4, 5],
    ];
    return $person;
}

獲取hook變量

若您想知道當前頁面的hook變量,可在 vue-spa.php 頁面底部添加以下代碼獲取

function wpdocs_myselective_css_or_js($hook)
{
    echo '<h1 style="color: crimson;text-align: center;">' . esc_html($hook) . '</h1>';
}
//獲取當前頁面hook
add_action('admin_enqueue_scripts', 'wpdocs_myselective_css_or_js');

給TA贊賞
共{{data.count}}人
人已贊賞
??
Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
?
購物車
優惠劵
搜索
久久精品国产99国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      国产成人精品免费看| 久久国产麻豆精品| 久久99久久99| 欧美精品日韩精品| 亚洲高清免费观看 | 91久久一区二区| 欧美精品九九99久久| 久久久五月婷婷| 亚洲视频图片小说| 91精品国产日韩91久久久久久| 国产一区二三区好的| 国产jizzjizz一区二区| 欧美精品久久久久久久多人混战 | 久久国产欧美日韩精品| 中文字幕欧美日本乱码一线二线 | 久久色中文字幕| 亚洲图片欧美激情| 亚洲国产成人av| 日本一区二区视频在线| 91精品久久久久久久91蜜桃| 久久女同精品一区二区| 洋洋av久久久久久久一区| 欧美视频日韩视频在线观看| 国产免费久久精品| 欧美激情一区二区三区蜜桃视频 | 欧美精品少妇一区二区三区| 国产精品久久久一本精品 | 久久久久88色偷偷免费| 中文字幕视频一区| 欧美精品乱码久久久久久| 色综合夜色一区| 懂色av一区二区三区免费看| 精品国产亚洲在线| 亚洲欧美日韩中文字幕一区二区三区 | 免费久久99精品国产| 久久爱www久久做| 成人h动漫精品一区二区| 99re热视频精品| 欧美日韩大陆在线| 久久久亚洲精华液精华液精华液| 国产精品久久久久久久久久免费看| 又紧又大又爽精品一区二区| 蜜芽一区二区三区| 91免费视频网| 精品国产乱码久久久久久蜜臀| 国产精品网友自拍| 日韩av电影天堂| 99久久久无码国产精品| 欧美老女人在线| 日本一区二区三区高清不卡 | 亚洲一区二区3| 国内精品免费在线观看| 91视频在线观看免费| 精品久久一二三区| 亚洲国产日日夜夜| 国产xxx精品视频大全| 欧美丰满一区二区免费视频| 国产精品久久久久天堂| 麻豆国产精品一区二区三区| 99精品欧美一区二区三区小说 | 欧美自拍偷拍午夜视频| 26uuu亚洲| 奇米影视一区二区三区小说| 色婷婷激情一区二区三区| 久久久99精品免费观看| 亚洲高清免费视频| 色婷婷av久久久久久久| 国产精品天干天干在线综合| 久久福利视频一区二区| 欧美日韩免费不卡视频一区二区三区| 国产精品日日摸夜夜摸av| 国产资源在线一区| 精品捆绑美女sm三区| 久久精品国产免费| 91精品国产色综合久久ai换脸| 亚洲老司机在线| 97se亚洲国产综合自在线不卡| 国产欧美日韩中文久久| 国内精品久久久久影院一蜜桃| 91精品婷婷国产综合久久性色| 亚洲不卡在线观看| 欧美性大战久久久久久久蜜臀| 亚洲欧洲另类国产综合| 丰满少妇久久久久久久| 国产婷婷色一区二区三区| 国产在线精品一区二区不卡了| 日韩一级大片在线观看| 欧美a一区二区| 日韩欧美一二三区| 久久福利视频一区二区| 久久综合给合久久狠狠狠97色69| 久久99久国产精品黄毛片色诱| 精品少妇一区二区三区视频免付费| 日韩av网站免费在线| 精品久久久久久久久久久院品网| 久久9热精品视频| 国产日韩欧美精品在线| 成人精品视频一区二区三区尤物| 国产精品毛片无遮挡高清| 色哟哟欧美精品| 无码av中文一区二区三区桃花岛| 日韩一卡二卡三卡| 国产寡妇亲子伦一区二区| 国产精品国模大尺度视频| 99国内精品久久| 亚洲成人一区在线| 久久夜色精品国产欧美乱极品| 国产成人无遮挡在线视频| 亚洲天堂中文字幕| 欧美一二三四在线| 成人午夜免费视频| 亚洲午夜私人影院| 精品国一区二区三区| 99久久精品久久久久久清纯| 丝袜美腿亚洲综合| 中文字幕一区三区| 欧美一区二区三区免费大片 | 蜜臀91精品一区二区三区| 26uuu亚洲综合色| 日本道在线观看一区二区| 免费成人小视频| 亚洲三级小视频| 日韩欧美一级特黄在线播放| 成人久久18免费网站麻豆| 亚洲v中文字幕| 中文字幕不卡三区| 欧美日韩精品一二三区| 国产精品影音先锋| 亚洲成人三级小说| 国产欧美一区二区精品仙草咪| 欧美视频中文一区二区三区在线观看| 国产中文字幕一区| 亚欧色一区w666天堂| 欧美激情在线看| 日韩女优视频免费观看| 在线日韩国产精品| 成人综合在线观看| 久久99精品久久久久婷婷| 中文字幕一区二区三区乱码在线| 欧美一级一区二区| 欧美亚州韩日在线看免费版国语版| 国产精品一二一区| 美女任你摸久久| 亚洲成人手机在线| 亚洲综合自拍偷拍| 自拍偷拍国产精品| 国产精品乱人伦中文| 精品国产乱码久久久久久久| 欧美日韩午夜在线| 在线观看精品一区| 日本高清不卡视频| 色综合久久综合网| 色综合久久综合中文综合网| 不卡视频一二三| 国产成人免费视频网站| 精品亚洲免费视频| 老司机一区二区| 日韩国产在线观看一区| 亚洲国产综合色| 最新中文字幕一区二区三区| 国产精品国产三级国产专播品爱网 | 美洲天堂一区二卡三卡四卡视频| 亚洲激情在线播放| 一区二区三区四区在线免费观看| 成人免费小视频| 中文字幕的久久| 日韩一区中文字幕| 亚洲激情自拍视频| 亚洲成av人片观看| 久久精品免费观看| 激情六月婷婷久久| 成人性生交大片免费看在线播放| 国产1区2区3区精品美女| 成人一区二区在线观看| 97se亚洲国产综合在线| 欧美专区在线观看一区| 欧美日韩一区二区在线观看视频| 欧美日韩免费电影| 精品福利一二区| 中文字幕免费在线观看视频一区| 国产精品久久久久毛片软件| 亚洲美女视频在线观看| 日日嗨av一区二区三区四区| 制服视频三区第一页精品| 国产999精品久久久久久绿帽| 亚洲成人av中文| 精品影视av免费| 国产精品区一区二区三| 久久久精品tv| eeuss影院一区二区三区| 日韩成人一级大片| 2020国产精品自拍| 欧美日韩国产高清一区| 成人国产亚洲欧美成人综合网| 伦理电影国产精品| 日本怡春院一区二区| 亚洲乱码国产乱码精品精小说| 免费黄网站欧美| 午夜精品影院在线观看| 亚洲午夜av在线|