久久精品国产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://m.kartiktrivedi.com
Description: 將vue構建的頁面嵌入WordPress 中并產生交互
Author: Muze
Author URI: http://m.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://m.kartiktrivedi.com
Description: 將vue構建的頁面嵌入WordPress 中并產生交互
Author: Muze
Author URI: http://m.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国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    午夜视频久久久| 久久精品国产v日韩v亚洲| 亚洲欧美韩国| 欧美女同在线视频| 精品51国产黑色丝袜高跟鞋| 亚洲午夜视频在线| 欧美黄色片免费观看| 国内成人精品2018免费看| 亚洲视频欧美视频| 欧美日韩国产页| 日韩午夜激情av| 欧美成人一区二免费视频软件| 国产伦精品一区| 亚洲影院在线观看| 欧美日韩一区二区在线播放| 亚洲国产欧美一区| 欧美成人资源| 91久久一区二区| 欧美激情一区二区| 亚洲精品在线观| 欧美—级a级欧美特级ar全黄| 亚洲国产精品高清久久久| 久久一区亚洲| 亚洲人成人一区二区三区| 免费观看亚洲视频大全| 亚洲第一区中文99精品| 女同性一区二区三区人了人一| 在线观看欧美视频| 欧美成人一区二区在线| 亚洲蜜桃精久久久久久久| 欧美人交a欧美精品| 亚洲午夜av电影| 国产精品制服诱惑| 久久福利精品| 亚洲国产经典视频| 欧美日韩高清在线播放| 亚洲一区中文字幕在线观看| 欧美深夜福利| 性8sex亚洲区入口| 在线精品国产欧美| 欧美三区在线视频| 欧美一区二区三区男人的天堂| 国内久久视频| 欧美日韩中文另类| 久久精品99国产精品酒店日本| 在线观看av一区| 欧美精品aa| 性刺激综合网| 亚洲精品色图| 国产欧美在线观看| 欧美黄色视屏| 久久福利资源站| 一本色道88久久加勒比精品| 国产婷婷成人久久av免费高清 | 性色av一区二区三区| 国产亚洲欧美另类一区二区三区| 欧美福利精品| 久久精品欧洲| 亚洲一区二区三区色| 尤物精品在线| 国产精品美女| 欧美激情一区在线观看| 欧美在线首页| 亚洲制服av| 亚洲人成亚洲人成在线观看图片| 国产精品一二| 欧美色图首页| 欧美猛交免费看| 久久久久综合网| 性欧美精品高清| 中文亚洲欧美| 一个人看的www久久| 亚洲第一精品在线| 国产婷婷色一区二区三区四区| 欧美日韩国产丝袜另类| 老司机精品福利视频| 性色av一区二区三区红粉影视| 亚洲理伦在线| 99精品国产在热久久| 亚洲国产成人午夜在线一区| 国产一区激情| 国产欧美一区二区精品仙草咪| 欧美日韩亚洲一区二| 欧美激情中文字幕一区二区 | 久久久91精品国产一区二区精品| 亚洲一区免费观看| 亚洲午夜一区二区三区| 99re6热只有精品免费观看| 亚洲国产毛片完整版| 激情视频一区| 怡红院av一区二区三区| 亚洲成人直播| 亚洲福利免费| 亚洲国产日韩精品| 亚洲老司机av| 亚洲天堂av在线免费观看| 99香蕉国产精品偷在线观看| 9色精品在线| 亚洲在线观看免费| 亚洲自拍偷拍麻豆| 性欧美video另类hd性玩具| 欧美在线视频观看| 久久午夜影视| 欧美激情在线| 国产精品国产三级国产aⅴ入口| 欧美性猛交xxxx乱大交退制版 | 国产精品二区二区三区| 国产精品久久久久久久久果冻传媒| 欧美小视频在线| 国产日韩精品入口| 在线观看视频日韩| 9l国产精品久久久久麻豆| 亚洲欧美日韩另类| 久久天堂精品| 欧美午夜电影在线观看| 国产性做久久久久久| 亚洲国产成人午夜在线一区 | 欧美欧美全黄| 国产精品一区二区黑丝| 精品粉嫩aⅴ一区二区三区四区| 在线观看欧美日韩国产| 亚洲视频福利| 欧美mv日韩mv国产网站| 国产精品日本一区二区| 亚洲高清免费视频| 午夜精品久久| 欧美精品97| 狠狠色丁香久久综合频道| 亚洲精品中文字幕在线| 欧美在线观看视频一区二区| 美乳少妇欧美精品| 国产视频一区三区| 国产精品99久久久久久www| 久久这里只精品最新地址| 国产精品99一区| 亚洲欧洲日本国产| 久久精品免视看| 国产精品美女www爽爽爽视频| 亚洲国产精品一区| 久久久久久久久一区二区| 国产精品国产三级国产普通话99 | 日韩一二三区视频| 久久视频一区二区| 国产亚洲一区在线| 午夜精品美女久久久久av福利| 欧美日韩国产高清视频| 在线观看日韩av| 久久激情中文| 国产亚洲欧美日韩日本| 亚洲已满18点击进入久久| 欧美激情导航| 亚洲欧洲日本一区二区三区| 猛男gaygay欧美视频| 激情综合视频| 久久另类ts人妖一区二区| 国产主播在线一区| 久久国产精彩视频| 国产视频精品免费播放| 香蕉精品999视频一区二区| 欧美日韩一区二区视频在线| 亚洲毛片在线免费观看| 欧美精品在线视频| 亚洲精品视频在线观看网站| 欧美激情精品久久久久久变态| 亚洲国产aⅴ天堂久久| 久久视频这里只有精品| 亚洲电影激情视频网站| 能在线观看的日韩av| 91久久精品日日躁夜夜躁欧美| 蜜桃久久精品一区二区| 亚洲精品欧美激情| 欧美日韩国语| 亚洲永久在线| 国产婷婷97碰碰久久人人蜜臀| 欧美一区在线看| 在线不卡中文字幕| 欧美屁股在线| 欧美一区二区三区在线看 | 老司机免费视频一区二区| 在线不卡中文字幕播放| 欧美.日韩.国产.一区.二区| 日韩午夜电影av| 国产精品视频午夜| 久久黄色网页| 亚洲日本欧美在线| 国产精品免费观看在线| 久久久久久**毛片大全| 亚洲欧洲偷拍精品| 欧美性大战久久久久久久| 午夜激情久久久| 在线观看一区欧美| 国产精品电影在线观看| 久久中文字幕导航| 一区二区欧美在线| 激情久久久久久| 欧美三级电影一区| 久久先锋资源| 午夜精品久久久久99热蜜桃导演| 伊人久久大香线蕉av超碰演员| 欧美三区不卡|