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

    9000px;">

      在线观看中文av| 中文字幕丰满乱码| 日本一区二区三区网站| 日韩精品视频网址| 亚洲av无码精品一区二区| 在线免费观看国产精品| 亚洲麻豆一区二区三区| 99热这里只有精品2| 国产精品久久久免费观看| 九九热视频免费| 日本一本在线观看| 在线视频 日韩| 91影院在线播放| 国产主播在线观看| 欧美激情亚洲综合| 一区二区免费av| 91网址在线播放| 国产一级中文字幕| 日本黄视频在线观看| 亚洲av无码精品一区二区| 91av久久久| 狠狠人妻久久久久久综合麻豆| 久久精品国产亚洲av麻豆| 日韩欧美不卡视频| 最近中文字幕免费视频| 国产精品久久久久久久99| 免费看涩涩视频| 怡春院在线视频| 成年人网站在线观看视频| 久草福利资源在线观看| 天天干天天操天天拍| 亚洲午夜精品久久久久久高潮| 国产aⅴ爽av久久久久| 久久亚洲精品国产| 性色av免费观看| 成人欧美一区二区三区黑人一| 久久无码人妻精品一区二区三区| 天天色综合社区| 成人在线手机视频| 免费av网站在线| 在线视频一二区| 国产又黄又粗又长| 天天做天天干天天操| 变态另类ts人妖一区二区| 欧美熟妇精品一区二区| 亚洲免费国产视频| 久久久香蕉视频| 最近中文字幕在线免费观看| 国产一区二区三区四区视频 | av黄色在线播放| 久久久香蕉视频| 中文字幕在线观看高清| 极品久久久久久| 伊人网中文字幕| 国产一区二区三区视频播放| 午夜视频在线网站| 国产欧美视频一区| 伊人久久亚洲综合| 黄色av电影网站| 中文字幕一区二区三区四区在线视频 | 在线视频免费观看一区| 国产污视频在线看| 亚欧精品在线视频| 国产又粗又猛又爽又黄的| 伊人久久成人网| 精国产品一区二区三区a片| 伊人成人免费视频| 久久久久久成人网| 337人体粉嫩噜噜噜| 欧美日韩人妻精品一区在线| av网站免费大全| 手机免费av片| 黄色片网站在线免费观看| 中文字幕 国产精品| 久久久久亚洲视频| 91精品国产高清一区二区三蜜臀| 人妻激情偷乱视频一区二区三区| www视频在线| 午夜精品久久久久久久96蜜桃| 黄色av小说在线观看| 亚洲人视频在线观看| 日本不卡视频一区| 国产亚洲精品女人久久久久久| 中文字幕第三页| 青花影视在线观看免费高清| 国产精品a成v人在线播放| 在线观看中文字幕网站| 男人操女人下面视频| 国产高潮失禁喷水爽到抽搐| 中文字幕 欧美 日韩| 日本高清www免费视频| 国产偷人爽久久久久久老妇app| 亚洲人视频在线观看| 天天久久综合网| 麻豆久久久久久久久久| 丰满熟妇乱又伦| 亚洲欧美综合7777色婷婷| 色一情一乱一乱一区91av | 日本中文字幕在线| 国产在线视频二区| www.cao超碰| 亚洲精品一区二区三区影院忠贞 | 狠狠操狠狠干视频| www久久久久久久| 亚洲黄色精品视频| 无码人妻精品一区二区三区蜜桃91| 久久久久久亚洲av无码专区| 国产黄色三级网站| av丝袜天堂网| 亚洲一区二区视频在线播放| 五月婷婷丁香在线| 日本网站在线免费观看| 久久视频免费看| 极品久久久久久久| 国产免费不卡av| 国产黄色一级大片| 成年网站免费在线观看| 一级黄色片在线观看| 中文字幕在线看人| 在线观看av中文字幕| 天堂免费在线视频| 日韩av在线中文| 人妻巨大乳一二三区| 免费看国产黄色片| 久久久精品视频免费| 精品日韩久久久| 九九九视频在线观看| 精品人妻在线视频| 黄色国产在线视频| 国精产品一品二品国精品69xx| 国产精品嫩草69影院| 国产寡妇亲子伦一区二区三区四区| 99精品国产99久久久久久97| 亚洲自拍偷拍一区二区| 亚洲污视频在线观看| 亚洲中文一区二区三区| 亚洲综合网在线观看| 亚洲一级片网站| 91精品人妻一区二区三区蜜桃欧美| 亚洲一级黄色录像| 91丨九色丨蝌蚪| www.亚洲自拍| 国产精品国产一区二区三区四区 | 无码人妻精品一区二区三区夜夜嗨| 日韩精品一区二区三区国语自制 | 精品日韩久久久| 久久免费看少妇高潮v片特黄| 久草视频手机在线| 男女做暖暖视频| 人人妻人人澡人人爽| 日韩激情综合网| 五月婷婷深爱五月| 中文字幕在线视频一区二区| 亚洲一级片免费| 成人毛片一区二区三区| 国产农村妇女毛片精品| 黄色一级片中国| 欧美成人精品欧美一级| 色丁香婷婷综合久久| 永久免费的av网站| 亚洲天天综合网| 国产chinese中国hdxxxx| 国产又粗又猛又爽又黄的视频小说 | 久久出品必属精品| 欧美美女性生活视频| 四虎成人免费视频| 中文字幕在线天堂| 成人免费视频国产| 韩国视频一区二区三区| 欧美色图亚洲视频| 圆产精品久久久久久久久久久| 亚洲欧美一区二区三区四区五区| 成人免费看片98欧美| 九九热精品在线播放| 日韩欧美综合视频| 中文字幕亚洲乱码熟女1区2区| 91香蕉视频在线观看视频| 国产丝袜视频在线观看| 嫩草av久久伊人妇女超级a| 亚洲不卡视频在线| av电影在线不卡| 精品无码久久久久| 手机在线免费毛片| 一级特级黄色片| 好男人在线视频www| 日本免费观看网站| 亚洲国产综合一区| 国产视频一区二区三| 人妻一区二区视频| 亚洲免费在线视频观看| 国产日产精品一区二区三区的介绍| 欧美交换国产一区内射| 在线观看国产精品一区| 丰满少妇一区二区| 欧美日韩在线视频免费播放| 亚洲国产精品久久久久爰性色| 国产免费黄色录像| 日韩三级小视频| av最新在线观看| 欧美人妻精品一区二区免费看|