久久精品国产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国产精品免费看_中文成人在线_日本在线播放视频_精品国产一区二区三区在线观看

    9000px;">

      日韩一区二区视频| 精品欧美一区二区三区精品久久 | 成人激情文学综合网| 国产欧美日韩亚州综合| 99精品一区二区| 日韩二区三区在线观看| 欧美激情一区二区三区不卡| 欧美偷拍一区二区| 国产精品自拍一区| 亚洲国产一区二区三区青草影视| 精品少妇一区二区三区| 91美女在线观看| 久久精品国产第一区二区三区| 中文字幕中文字幕在线一区| 欧美一区二区三区免费观看视频| 丰满放荡岳乱妇91ww| 一区二区不卡在线播放 | 欧美性xxxxx极品少妇| 久久精品噜噜噜成人88aⅴ| 国产精品黄色在线观看| 日韩欧美一区二区久久婷婷| 91福利国产成人精品照片| 久久99精品国产.久久久久| 亚洲精品乱码久久久久久久久 | 亚洲动漫第一页| 国产精品女主播在线观看| 日韩一区二区三区视频在线观看| 91性感美女视频| 国产成人一区二区精品非洲| 日韩av二区在线播放| 亚洲一区视频在线观看视频| 国产精品欧美一区二区三区| 久久精品水蜜桃av综合天堂| 日韩欧美亚洲一区二区| 日韩一区二区免费在线观看| 欧美日韩国产免费一区二区| 在线免费观看不卡av| 成人教育av在线| 国产精品888| 国产精品77777竹菊影视小说| 另类小说欧美激情| 麻豆91精品91久久久的内涵| 婷婷成人综合网| 午夜免费久久看| 午夜精品福利在线| 日日夜夜精品视频天天综合网| 亚洲综合激情网| 一区二区三区中文字幕电影 | 亚洲成av人片一区二区梦乃 | 日韩三级免费观看| 欧美精品久久一区| 在线播放一区二区三区| 在线成人小视频| 日韩一区二区在线播放| 日韩精品一区二区三区视频| 欧美xxxxxxxxx| 国产三级精品视频| 国产精品成人午夜| 亚洲最大成人综合| 奇米精品一区二区三区在线观看一| 日本不卡一区二区| 国产一区二区精品在线观看| 成人一区二区视频| 色老头久久综合| 欧美一级日韩一级| 欧美国产1区2区| 亚洲综合网站在线观看| 日韩电影一区二区三区四区| 国模少妇一区二区三区| 99视频一区二区三区| 欧美日韩五月天| 久久综合九色综合欧美就去吻| 日本一区二区三区高清不卡| 亚洲女与黑人做爰| 亚洲成人三级小说| 国产一区二区91| 色屁屁一区二区| 欧美白人最猛性xxxxx69交| 欧美韩国日本不卡| 亚洲aaa精品| 丰满放荡岳乱妇91ww| 精品1区2区3区| 中日韩免费视频中文字幕| 亚洲一区免费观看| 国产做a爰片久久毛片| 色欲综合视频天天天| 精品国产凹凸成av人网站| 亚洲欧美偷拍另类a∨色屁股| 蜜桃av一区二区在线观看| 成年人国产精品| 精品女同一区二区| 亚洲午夜一二三区视频| 精品一区二区免费看| 欧美日韩一区二区三区高清| 亚洲国产精品av| 蜜臀91精品一区二区三区| 色婷婷av久久久久久久| 国产日产欧美精品一区二区三区| 日日夜夜免费精品视频| 日本电影欧美片| 国产精品久久福利| 国产精品1024| 欧美成人乱码一区二区三区| 亚洲国产另类精品专区| av在线一区二区| 国产无遮挡一区二区三区毛片日本| 亚洲 欧美综合在线网络| 97精品视频在线观看自产线路二| 久久久久99精品一区| 久久精品国产77777蜜臀| 欧美日韩国产高清一区二区三区| 中文字幕一区二区三区不卡| 国产麻豆精品theporn| 欧美mv和日韩mv的网站| 日韩一区欧美二区| 91.麻豆视频| 麻豆一区二区99久久久久| 91精品国产aⅴ一区二区| 亚洲第一久久影院| 欧美日韩精品一区二区三区| 伊人婷婷欧美激情| 色诱视频网站一区| 亚洲资源中文字幕| 欧美日韩在线播| 日本在线播放一区二区三区| 欧美妇女性影城| 日本aⅴ亚洲精品中文乱码| 制服丝袜中文字幕亚洲| 日本人妖一区二区| 亚洲精品一区二区三区精华液| 久久99精品国产| 国产精品情趣视频| 色伊人久久综合中文字幕| 一区二区三区日韩在线观看| 欧美午夜片在线观看| 热久久国产精品| 精品对白一区国产伦| 成人h动漫精品| 亚洲国产精品自拍| 欧美成人精品二区三区99精品| 国产伦精一区二区三区| 综合激情网...| 欧美一区二区三区在线看| 国产精品一二三| 一区二区三区日韩欧美| 欧美一级欧美一级在线播放| 国产一区 二区 三区一级| 亚洲欧美日韩小说| 欧美一区二区二区| 国产 欧美在线| 性感美女极品91精品| 久久久欧美精品sm网站| 在线免费av一区| 国产精品综合二区| 亚洲成av人**亚洲成av**| www国产成人免费观看视频 深夜成人网| 成人精品视频一区二区三区尤物| 亚洲一区视频在线观看视频| 久久影音资源网| 欧美日韩精品综合在线| 成人av在线资源| 国产综合色在线视频区| 亚洲成a天堂v人片| 中文字幕在线观看不卡| 精品久久久久久综合日本欧美| 一本色道a无线码一区v| 国产精品一级片| 秋霞午夜av一区二区三区| 一区二区三区在线视频播放 | 久久久99久久精品欧美| 欧美三级在线看| 波多野结衣在线aⅴ中文字幕不卡| 秋霞午夜鲁丝一区二区老狼| 亚洲黄色小说网站| 国产精品国产自产拍高清av王其| 精品少妇一区二区三区在线播放 | 欧美日韩国产高清一区二区 | 亚洲色图清纯唯美| 久久综合中文字幕| 91麻豆精品久久久久蜜臀| 91久久精品国产91性色tv| 成人sese在线| 国产91丝袜在线播放| 韩国精品在线观看| 美女视频黄免费的久久| 日韩高清在线电影| 天天色图综合网| 午夜久久电影网| 亚洲国产一二三| 亚洲在线观看免费| 亚洲国产婷婷综合在线精品| 亚洲免费在线播放| 亚洲色图视频网| 亚洲另类色综合网站| 亚洲欧美日韩国产综合在线| 成人欧美一区二区三区| 亚洲人精品午夜| 亚洲精品福利视频网站| 亚洲免费电影在线| 一区二区在线免费|