<abbr id="y2asm"></abbr><abbr id="y2asm"></abbr>
  • <code id="y2asm"></code>
    <code id="y2asm"></code>
  • <button id="y2asm"></button>
    <rt id="y2asm"></rt>

    如何開發一個自動生成目錄樹的WordPress插件

    如何開發一個自動生成目錄樹的WordPress插件

    如何開發一個自動生成目錄樹的WordPress插件

    隨著WordPress網站的不斷發展,網站內容的規模也越來越龐大。愛掏網 - it200.com對于讀者來說,能夠快速導航和瀏覽網站的內容是非常重要的。愛掏網 - it200.com目錄樹是一個非常實用的功能,可以幫助讀者快速定位并瀏覽網站的不同部分。愛掏網 - it200.com本文將教你如何開發一個自動生成目錄樹的WordPress插件。愛掏網 - it200.com

    在開始開發插件之前,我們需要了解一下WordPress插件的基本結構和原理。愛掏網 - it200.com一個WordPress插件由一個主要的插件文件夾和一個或多個功能文件組成。愛掏網 - it200.com主要文件夾包含插件的主要文件(通常是一個PHP文件)和其他所需的文件(如CSS和JavaScript文件)。愛掏網 - it200.com功能文件則包含實現插件具體功能的代碼。愛掏網 - it200.com接下來,我們將一步一步地創建一個自動生成目錄樹的WordPress插件。愛掏網 - it200.com

    第一步:創建插件基本結構
    首先,我們需要創建一個文件夾,作為我們插件的主文件夾。愛掏網 - it200.com給它起一個有意義的名字,比如"table-of-contents"。愛掏網 - it200.com在這個文件夾中,我們將創建一個名為"table-of-contents.php"的主要插件文件。愛掏網 - it200.com

    打開"table-of-contents.php"文件,并添加以下代碼到文件中:

    登錄后復制

    在上述代碼中,我們定義了插件的基本信息,如名稱、描述、版本、作者和許可證。愛掏網 - it200.com

    第二步:添加插件設置頁面
    現在,我們需要為插件添加一個設置頁面,用于選擇要在哪些頁面或文章中顯示目錄樹。愛掏網 - it200.com在"table-of-contents.php"文件中,添加以下代碼:

    // 激活插件時添加設置菜單
    function toc_add_settings_menu() {
      add_options_page( 'Table of Contents Settings', 'Table of Contents', 'manage_options', 'table-of-contents-settings', 'toc_render_settings_page' );
    }
    add_action( 'admin_menu', 'toc_add_settings_menu' );
    
    // 渲染設置頁面
    function toc_render_settings_page() {
      ?>
      
        

    Table of Contents Settings

    登錄后復制

    在上述代碼中,我們使用WordPress提供的函數add_options_page()創建了一個設置頁面,并將其鏈接添加到WordPress后臺的"設置"菜單中。愛掏網 - it200.com我們還創建了一個用于渲染設置頁面內容的函數toc_render_settings_page()愛掏網 - it200.com

    第三步:添加設置字段和保存功能
    在上一步中,我們創建了一個設置頁面,但頁面上還沒有任何設置字段。愛掏網 - it200.com接下來,我們將添加一個多選框字段,用于選擇要在哪些頁面或文章中顯示目錄樹。愛掏網 - it200.com在"table-of-contents.php"文件中,添加以下代碼:

    // 注冊設置字段
    function toc_register_settings() {
      register_setting( 'toc_settings_group', 'toc_display_options' );
      add_settings_section( 'toc_general_section', 'General Settings', 'toc_general_section_callback', 'toc_settings_page' );
      add_settings_field( 'toc_display_options_field', 'Display Options', 'toc_display_options_field_callback', 'toc_settings_page', 'toc_general_section' );
    }
    add_action( 'admin_init', 'toc_register_settings' );
    
    // 渲染字段
    function toc_display_options_field_callback() {
      $options = get_option( 'toc_display_options' );
      $pages = get_pages();
      foreach ( $pages as $page ) {
        $checked = isset( $options[$page->ID] ) ? checked( $options[$page->ID], $page->post_title, false ) : '';
        echo ' ' . esc_html( $page->post_title ) . '
    '; } } // 保存設置 function toc_save_settings() { if ( isset( $_POST['toc_display_options'] ) ) { $options = array(); foreach ( $_POST['toc_display_options'] as $page_id => $title ) { $options[$page_id] = $title; } update_option( 'toc_display_options', $options ); } } add_action( 'admin_post_save_toc_settings', 'toc_save_settings' );
    登錄后復制

    上述代碼中,我們使用了register_setting()函數來注冊一個設置字段,使用add_settings_section()函數創建了一個設置字段的組,使用add_settings_field()函數創建了一個多選框字段。愛掏網 - it200.com

    我們還定義了一個渲染設置字段的回調函數toc_display_options_field_callback(),該函數將所有頁面作為多選框字段顯示。愛掏網 - it200.com我們還定義了一個保存設置的函數toc_save_settings(),在該函數中,我們使用update_option()函數將用戶選擇的頁面保存到WordPress數據庫中。愛掏網 - it200.com

    第四步:生成目錄樹
    現在,我們已經設置了插件的基本結構和設置頁面,接下來我們將添加生成目錄樹的功能。愛掏網 - it200.com在"table-of-contents.php"文件中,添加以下代碼:

    // 生成目錄樹
    function toc_generate_toc() {
      $options = get_option( 'toc_display_options' );
      if ( $options ) {
        global $post;
        if ( isset( $options[$post->ID] ) ) {
          $content = apply_filters( 'the_content', $post->post_content );
          $pattern = "/(.*?)[1-6]>/";
          preg_match_all( $pattern, $content, $headings, PREG_SET_ORDER );
          $tree = array();
          foreach ( $headings as $heading ) {
            $level = intval( $heading[1] );
            $title = strip_tags( $heading[2] );
            $tree[] = array(
              'level' => $level,
              'title' => $title
            );
          }
          $toc_html = '
      '; $current_level = 0; foreach ( $tree as $branch ) { if ( $branch['level'] == $current_level ) { $toc_html .= '
    • '; } elseif ( $branch['level'] > $current_level ) { $toc_html .= '
        '; } elseif ( $branch['level'] '; for ( $i = $branch['level']; $i
    • '; } $toc_html .= '
    • '; } $toc_html .= '' . esc_html( $branch['title'] ) . ''; $current_level = $branch['level']; } $toc_html .= '
    • '; for ( $i = $current_level; $i > 0; $i-- ) { $toc_html .= '
    '; } $toc_html .= ''; return $toc_html; } } } add_shortcode( 'table_of_contents', 'toc_generate_toc' ); 登錄后復制

    在上述代碼中,我們首先獲取用戶選擇的頁面,并根據這些頁面的內容生成目錄樹。愛掏網 - it200.com我們使用了正則表達式來匹配頁面中的標題標簽,并將匹配到的標題存儲在一個數組中。愛掏網 - it200.com之后,我們使用循環將這些標題按層級和順序組織成目錄樹。愛掏網 - it200.com

    我們還使用了一個短代碼[table_of_contents]來調用toc_generate_toc()函數,并將生成的目錄樹作為內容返回。愛掏網 - it200.com

    第五步:添加樣式和腳本
    為了讓目錄樹具有更好的外觀和交互效果,我們需要添加一些樣式和腳本。愛掏網 - it200.com在"table-of-contents.php"文件中,添加以下代碼:

    // 添加樣式和腳本
    function toc_enqueue_scripts() {
      wp_enqueue_style( 'toc-style', plugins_url( 'css/style.css', __FILE__ ) );
      wp_enqueue_script( 'toc-script', plugins_url( 'js/script.js', __FILE__ ), array( 'jquery' ), '1.0.0', true );
    }
    add_action( 'wp_enqueue_scripts', 'toc_enqueue_scripts' );
    登錄后復制

    在上述代碼中,我們使用了WordPress提供的函數wp_enqueue_style()wp_enqueue_script()來加載插件所需的樣式表和腳本文件。愛掏網 - it200.com注意,我們需要將樣式表和腳本文件放在插件文件夾的"css"和"js"子文件夾中,并為它們添加相應的文件名。愛掏網 - it200.com

    第六步:將目錄樹添加到頁面或文章中
    最后一步是將生成的目錄樹添加到要顯示目錄樹的頁面或文章中。愛掏網 - it200.com在編輯頁面或文章時,你可以使用短代碼[table_of_contents]將目錄樹插入到頁面的任意位置。愛掏網 - it200.com請在"table-of-contents.php"文件中添加以下代碼:

    
    
    登錄后復制

    上述代碼中,我們使用JavaScript代碼為編輯器添加一個按鈕,該按鈕可以快速插入[table_of_contents]短代碼到編輯器中。愛掏網 - it200.com

    通過以上六個步驟,我們已經開發出了一個自動生成目錄樹的WordPress插件。愛掏網 - it200.com你可以根據自己的需求對插件進行進一步的修改和優化。愛掏網 - it200.com希望這篇文章對你有所幫助,祝你開發順利!

    以上就是如何開發一個自動生成目錄樹的WordPress插件的詳細內容,更多請關注愛掏網 - it200.com其它相關文章!

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 无码一区二区三区免费| 羞羞视频在线观看入口| 欧美三级在线看中文字幕 | 国产在视频线精品视频2021| 亚洲av高清一区二区三区| 2021人人莫人人擦人人看| 欧美日本韩国一区二区| 国内精品伊人久久久久影院对白 | 怡红院免费手机在线观看| 啦啦啦中文在线观看日本| 中文乱码人妻系列一区二区| 美女胸又大又www又黄的网站 | 男女抽搐一进一出无遮挡| 小12箩利洗澡无码视频网站| 免费人成网站7777视频| bt天堂中文资源在线| 烈血黄昏中视频| 国内国产真实露脸对白| 亚洲国产精品一区二区九九| 久久精品国产亚洲AV高清热| 青青青青青免精品视频| 日日夜夜精品视频| 午夜爽爽性刺激一区二区视频| 一个人的突击队3电影在线观看| 男女免费爽爽爽在线视频| 国产麻豆精品精东影业av网站 | 久久国产精品99久久久久久牛牛| 高潮毛片无遮挡高清免费| 撞击着云韵的肉臀| 全黄a一级毛片| 97se色综合一区二区二区| 欧美人与动性行为网站免费| 国产成人一级片| 中文字幕在线观看免费视频| 精品一区二区在线观看1080p| 在线观看免费av网站| 亚洲乱码在线视频| 视频在线一区二区| 婷婷无套内射影院| 亚洲欧美成人一区二区在线电影 | 男人下面进女人下面视频免费|