怎么給古騰堡編輯器添加自定義區(qū)塊? - WordPress開(kāi)發(fā)

    通過(guò)這篇wordpress教程,你就能了解一個(gè)古登堡編輯器區(qū)塊時(shí)如何制作的了。

    作為目前WordPress主推的新版本編輯器,古騰堡編輯器前途無(wú)量,但默認(rèn)的一些古騰堡編輯器的區(qū)塊不夠我們?nèi)粘>庉嬑恼拢@個(gè)時(shí)候,我們就可以開(kāi)發(fā)一些自己的古騰堡編輯器區(qū)塊,方便我們?nèi)粘>庉嬑恼隆?/p>

    通過(guò)這篇wordpress開(kāi)發(fā)教程,你就能開(kāi)發(fā)自己的古騰堡編輯器區(qū)塊了,當(dāng)然。能夠有效的自定義模塊,才是古騰堡編輯器最有優(yōu)勢(shì)的地方。

    關(guān)于古騰堡編輯器,官方之前給了一個(gè)初步的文檔,但是那個(gè)文檔是以插件化為教程進(jìn)行的,對(duì)于主題設(shè)計(jì)者而言,更希望在自己的主題里直接加入古騰堡自定義模塊比較方便,因此本文的方向是在主題里直接往古騰堡編輯器里插入自定義模塊。

    今天我們來(lái)了解下如何給古騰堡編輯器添加自定義模塊。

    怎么給古騰堡編輯器添加自定義區(qū)塊? - WordPress開(kāi)發(fā)

    加載古騰堡自定義模板

    //加載古騰堡自定義模板
    function my_gutenberg_block(){
    	//注冊(cè)古騰堡編輯器
    	wp_register_script( 'block-js', get_template_directory_uri() . '/extends/src/blocks.js', array('wp-blocks', 'wp-element', 'wp-editor', 'wp-i18n'), '1.0.0' );
    	//插入模塊
    	//fishtheme/block可自定義, 比如: demo/block
    	register_block_type( 'fishtheme/block', array(
    		'editor_script' => 'block-js'
    	) );
    }
    add_action( 'init', 'my_gutenberg_block' );

    新建blocks.js

    在目前使用的WordPress主題目錄下,新建一個(gè)src的文件夾,并新建blocks.js。

    blocks.js文件路徑可以自定義,注意把上面代碼里的對(duì)應(yīng)路徑也改一下就行。

    編輯blocks.js

    這個(gè)是古騰堡核心文件,基本所有的功能都在這里。

    //js代碼
    //引入對(duì)應(yīng)方法, 需要注意的是這里引用了4個(gè)方法, 那么在底部也需要window.wp.回調(diào)這4個(gè)方法
    //這4個(gè)方法的來(lái)源是functions.php里的wp_register_script時(shí)array()里傳入, 需要注意一一對(duì)應(yīng)
    (function (blocks, element, editor, i18n) {
        var el = element.createElement; //用于輸出HTML
        var RichText = editor.RichText; //用于獲取文本輸入塊
    
        blocks.registerBlockType('gutenberg-examples/example-03-editable', {
            title: '測(cè)試模塊', //標(biāo)題
            icon: 'universal-access-alt', //圖標(biāo)
            category: 'layout', //對(duì)應(yīng)欄目
            attributes: { //模塊的屬性
                content: {
                    type: 'array',
                    source: 'children',
                    selector: 'p',
                },
            },
            //編輯時(shí)
            edit: function (props) {
                //獲取模塊輸入的值
                var content = props.attributes.content;
                //點(diǎn)擊輸入框時(shí)用的方法
                function onChangeContent(newContent) {
                    //將輸入框里的內(nèi)容輸出到模塊屬性里
                    props.setAttributes({ content: newContent });
                }
                //返回HTML
                //el的方法格式為: el( 對(duì)象, 屬性, 值 ); 可以相互嵌套
                //例如:
                // el(
                //     'div',
                //     {
                //         className: 'demo-class',
                //     },
                //     'DEMO數(shù)據(jù)'
                // );
                // 輸出為: <div class="demo-class">DEMO數(shù)據(jù)</div>
                return el(
                    RichText,
                    {
                        tagName: 'p',
                        className: props.className,
                        onChange: onChangeContent,
                        value: content,
                    }
                );
            },
            //保存時(shí)
            save: function (props) {
                //保存時(shí)返回的HTML
                return el(RichText.Content, {
                    tagName: 'p', value: props.attributes.content,
                });
            },
        });
    }(
        window.wp.blocks,
        window.wp.element,
        window.wp.editor,
        window.wp.i18n
    ));

    查看效果

    以上步驟完成后,在編輯器頁(yè)面刷新,然后添加區(qū)塊,看看是不是添加成功了。

    此為官網(wǎng)提供的demo。

    相關(guān)推薦

    怎么給古騰堡編輯器添加自定義區(qū)塊? - WordPress開(kāi)發(fā)-Npcink
    怎么給古騰堡編輯器添加自定義區(qū)塊? - WordPress開(kāi)發(fā)-Npcink

    XinTheme Block - 為網(wǎng)站增加古藤堡區(qū)塊的WordPress插件

    怎么給古騰堡編輯器添加自定義區(qū)塊? - WordPress開(kāi)發(fā)-Npcink
    怎么給古騰堡編輯器添加自定義區(qū)塊? - WordPress開(kāi)發(fā)-Npcink

    古騰堡編輯器的Pro圖標(biāo) - WordPress插件

    國(guó)外主題

    Qalam - 報(bào)紙和雜志W(wǎng)ordPress新聞主題

    2020-1-29 13:43:00

    國(guó)外主題

    The Lifestyle - 復(fù)古和簡(jiǎn)單的WordPress博客主題

    2020-2-29 7:16:20

    ??
    Npcink上的部份代碼及教程來(lái)源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無(wú)意侵害您的權(quán)益,請(qǐng)發(fā)送郵件至 1355471563#qq.com 或點(diǎn)擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    2 條回復(fù) A文章作者 M管理員
    1. jaskloveyou

      總感覺(jué)這個(gè)不太好用,要有一點(diǎn)代碼基礎(chǔ)

    ?
    個(gè)人中心
    購(gòu)物車
    優(yōu)惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 国内精品一区二区三区在线观看| 国模私拍福利一区二区| 中文字幕一区日韩在线视频 | 久久精品午夜一区二区福利| 香蕉久久ac一区二区三区| 亚洲一区二区三区自拍公司| 美女福利视频一区二区| 亚洲AV本道一区二区三区四区| 日本一区二区在线免费观看| 日本精品3d动漫一区二区| 久久久久人妻精品一区二区三区| 国产伦理一区二区三区| 亚洲AV一区二区三区四区| 久久青草精品一区二区三区| 亚洲乱码一区二区三区在线观看| 一区二区在线视频观看| 美女福利视频一区二区| 亚洲AV无码国产一区二区三区 | 无码人妻品一区二区三区精99| 国产一区二区三区无码免费| 韩国精品一区视频在线播放| 无码一区二区三区免费视频| 亚洲AV成人精品日韩一区| 国产情侣一区二区| 国产亚洲综合一区二区三区| 国产伦精品一区二区三区免费下载 | 日本一区二区三区在线看| 精品免费国产一区二区| 日本精品3d动漫一区二区| 精品一区二区三区视频| av在线亚洲欧洲日产一区二区| 一区二区三区影院| 国产成人AV一区二区三区无码| 久久精品免费一区二区三区 | 亚洲一区精品伊人久久伊人| 国产91一区二区在线播放不卡 | 亚洲一区精彩视频| 另类国产精品一区二区| 福利一区国产原创多挂探花| 国产精品 视频一区 二区三区| 免费视频一区二区|