목차
Table of Contents Settings
CMS 튜토리얼 Word누르다 디렉토리 트리를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

디렉토리 트리를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

Sep 06, 2023 am 09:55 AM
워드프레스 플러그인 개발(플러그인 개발)

디렉토리 트리를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

디렉토리 트리를 자동으로 생성하는 WordPress 플러그인 개발 방법

WordPress 웹사이트의 지속적인 개발과 함께 웹사이트 콘텐츠의 규모도 점점 커지고 있습니다. 독자가 웹사이트의 콘텐츠를 빠르게 탐색하고 검색할 수 있는 것은 매우 중요합니다. 디렉토리 트리는 독자가 웹사이트의 다른 부분을 빠르게 찾고 탐색하는 데 도움이 되는 매우 유용한 기능입니다. 이 기사에서는 디렉토리 트리를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법을 설명합니다.

플러그인 개발을 시작하기 전에 WordPress 플러그인의 기본 구조와 원리를 이해해야 합니다. WordPress 플러그인은 기본 플러그인 폴더와 하나 이상의 기능 파일로 구성됩니다. 기본 폴더에는 플러그인의 기본 파일(일반적으로 PHP 파일)과 기타 필수 파일(예: CSS 및 JavaScript 파일)이 포함되어 있습니다. 함수 파일에는 플러그인의 특정 기능을 구현하는 코드가 포함되어 있습니다. 다음으로, 단계별로 디렉토리 트리를 자동으로 생성하는 WordPress 플러그인을 만들어 보겠습니다.

1단계: 플러그인의 기본 구조 만들기
먼저 플러그인의 기본 폴더로 사용할 폴더를 만들어야 합니다. "목차"와 같이 의미 있는 이름을 지정합니다. 이 폴더에 "table-of-contents.php"라는 기본 플러그인 파일을 생성합니다.

"table-of-contents.php" 파일을 열고 다음 코드를 파일에 추가하세요.

<?php
/**
 * Plugin Name: Table of Contents
 * Description: Automatically generates a table of contents for your WordPress posts and pages.
 * Version: 1.0.0
 * Author: Your Name
 * License: GPL2
 */

// 插件代码将在这里添加
?>
로그인 후 복사

위 코드에서는 이름, 설명, 버전, 작성자, 플러그인의 기본 정보를 정의합니다. 그리고 라이센스.

2단계: 플러그인 설정 페이지 추가
이제 디렉토리 트리를 표시할 페이지나 기사를 선택하기 위해 플러그인에 대한 설정 페이지를 추가해야 합니다. "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() {
  ?>
  <div class="wrap">
    <h1 id="Table-of-Contents-Settings">Table of Contents Settings</h1>
    <form method="post" action="options.php">
      <?php settings_fields( 'toc_settings_group' ); ?>
      <?php do_settings_sections( 'toc_settings_page' ); ?>
      <?php submit_button(); ?>
    </form>
  </div>
  <?php
}
로그인 후 복사

위 코드에서는 워드프레스에서 제공하는 add_options_page() 함수를 이용하여 설정 페이지를 생성하고 이를 추가합니다. 링크는 WordPress 백엔드의 설정 메뉴에 추가됩니다. 또한 설정 페이지 콘텐츠를 렌더링하는 toc_render_settings_page() 함수도 만들었습니다. add_options_page()创建了一个设置页面,并将其链接添加到WordPress后台的"设置"菜单中。我们还创建了一个用于渲染设置页面内容的函数toc_render_settings_page()

第三步:添加设置字段和保存功能
在上一步中,我们创建了一个设置页面,但页面上还没有任何设置字段。接下来,我们将添加一个多选框字段,用于选择要在哪些页面或文章中显示目录树。在"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 '<input type="checkbox" name="toc_display_options[' . $page->ID . ']" value="' . esc_attr( $page->post_title ) . '" ' . $checked . '> ' . esc_html( $page->post_title ) . '<br>';
  }
}

// 保存设置
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()函数创建了一个多选框字段。

我们还定义了一个渲染设置字段的回调函数toc_display_options_field_callback(),该函数将所有页面作为多选框字段显示。我们还定义了一个保存设置的函数toc_save_settings(),在该函数中,我们使用update_option()函数将用户选择的页面保存到WordPress数据库中。

第四步:生成目录树
现在,我们已经设置了插件的基本结构和设置页面,接下来我们将添加生成目录树的功能。在"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 = "/<h([1-6])>(.*?)</h[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 = '<ul class="toc">';
      $current_level = 0;
      foreach ( $tree as $branch ) {
        if ( $branch['level'] == $current_level ) {
          $toc_html .= '</li><li>';
        } elseif ( $branch['level'] > $current_level ) {
          $toc_html .= '<ul>';
        } elseif ( $branch['level'] < $current_level ) {
          $toc_html .= '</li>';
          for ( $i = $branch['level']; $i < $current_level; $i++ ) {
            $toc_html .= '</ul></li>';
          }
          $toc_html .= '<li>';
        }
        $toc_html .= '<a href="#' . sanitize_title( $branch['title'] ) . '">' . esc_html( $branch['title'] ) . '</a>';
        $current_level = $branch['level'];
      }
      $toc_html .= '</li>';
      for ( $i = $current_level; $i > 0; $i-- ) {
        $toc_html .= '</ul></li>';
      }
      $toc_html .= '</ul>';
      return $toc_html;
    }
  }
}
add_shortcode( 'table_of_contents', 'toc_generate_toc' );
로그인 후 복사

在上述代码中,我们首先获取用户选择的页面,并根据这些页面的内容生成目录树。我们使用了正则表达式来匹配页面中的标题标签,并将匹配到的标题存储在一个数组中。之后,我们使用循环将这些标题按层级和顺序组织成目录树。

我们还使用了一个短代码[table_of_contents]来调用toc_generate_toc()函数,并将生成的目录树作为内容返回。

第五步:添加样式和脚本
为了让目录树具有更好的外观和交互效果,我们需要添加一些样式和脚本。在"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()来加载插件所需的样式表和脚本文件。注意,我们需要将样式表和脚本文件放在插件文件夹的"css"和"js"子文件夹中,并为它们添加相应的文件名。

第六步:将目录树添加到页面或文章中
最后一步是将生成的目录树添加到要显示目录树的页面或文章中。在编辑页面或文章时,你可以使用短代码[table_of_contents]将目录树插入到页面的任意位置。请在"table-of-contents.php"文件中添加以下代码:

<!-- 在编辑器中显示目录树短代码按钮 -->
<script>
  function add_toc_shortcode_button() {
    if ( typeof wp !== 'undefined' && wp.hasOwnProperty( 'shortcode' ) ) {
      wp.mce = wp.mce || {};
      wp.mce.tinymce = wp.mce.tinymce || {};
      wp.mce.views = wp.mce.views || {};

      wp.mce.tinymce.Template = Backbone.Marionette.ItemView.extend({});

      $( document ).on( 'click', 'a.add-toc-shortcode', function(e) {
        e.preventDefault();
        wp.mce.views.getParentWindow().send_to_editor('[table_of_contents]');
      });
    }
  }
  $(document).ready(function() {
    add_toc_shortcode_button();
  });
</script>
로그인 후 복사

上述代码中,我们使用JavaScript代码为编辑器添加一个按钮,该按钮可以快速插入[table_of_contents]

3단계: 설정 필드 추가 및 기능 저장🎜이전 단계에서 설정 페이지를 생성했지만 아직 페이지에 설정 필드가 없었습니다. 다음으로 트리를 표시할 페이지나 게시물을 선택하는 확인란 필드를 추가하겠습니다. "table-of-contents.php" 파일에 다음 코드를 추가합니다: 🎜rrreee🎜위 코드에서는 register_setting() 함수를 사용하여 설정 필드를 등록합니다. add_settings_section( ) 함수는 설정 필드 그룹을 생성하고 add_settings_field() 함수를 사용하여 다중 선택 상자 필드를 생성합니다. 🎜🎜또한 모든 페이지를 다중 선택 상자 필드로 표시하는 설정 필드 렌더링을 위한 콜백 함수 toc_display_options_field_callback()을 정의합니다. 또한 toc_save_settings() 설정을 저장하는 함수를 정의합니다. 여기서 update_option() 함수를 사용하여 사용자가 선택한 페이지를 WordPress 데이터베이스에 저장합니다. 🎜🎜4단계: 디렉토리 트리 생성🎜 이제 플러그인의 기본 구조와 설정 페이지를 설정했으므로 디렉토리 트리를 생성하는 기능을 추가하겠습니다. "table-of-contents.php" 파일에 다음 코드를 추가합니다: 🎜rrreee🎜위 코드에서는 먼저 사용자가 선택한 페이지를 가져오고 이 페이지의 콘텐츠를 기반으로 디렉토리 트리를 생성합니다. 정규식을 사용하여 페이지의 제목 태그를 일치시키고 일치하는 제목을 배열에 저장합니다. 그런 다음 루프를 사용하여 이러한 제목을 계층적, 순차적으로 디렉토리 트리로 구성합니다. 🎜🎜또한 단축 코드 [table_of_contents]를 사용하여 toc_generate_toc() 함수를 호출하고 생성된 디렉터리 트리를 콘텐츠로 반환합니다. 🎜🎜5단계: 스타일 및 스크립트 추가🎜디렉토리 트리에 더 나은 모양과 대화형 효과를 제공하려면 몇 가지 스타일과 스크립트를 추가해야 합니다. "table-of-contents.php" 파일에 다음 코드를 추가하세요: 🎜rrreee🎜 위 코드에서는 제공된 wp_enqueue_style()wp_enqueue_script()를 통해 플러그인에 필요한 스타일 시트와 스크립트 파일을 로드합니다. 스타일시트와 스크립트 파일을 플러그인 폴더의 "css" 및 "js" 하위 폴더에 배치하고 해당 파일 이름을 추가해야 합니다. 🎜🎜6단계: 페이지나 게시물에 디렉터리 트리 추가🎜 마지막 단계는 생성된 디렉터리 트리를 디렉터리 트리를 표시하려는 페이지나 게시물에 추가하는 것입니다. 페이지나 게시물을 편집할 때 단축 코드 <code>[table_of_contents]를 사용하여 페이지 어디든 목차 트리를 삽입할 수 있습니다. "table-of-contents.php" 파일에 다음 코드를 추가하세요: 🎜rrreee🎜위 코드에서는 JavaScript 코드를 사용하여 [table_of_contents]를 빠르게 삽입할 수 있는 버튼을 편집기에 추가했습니다. code> 편집기에 단축 코드를 입력합니다. 🎜<p>위의 6단계를 거쳐 디렉토리 트리를 자동으로 생성하는 워드프레스 플러그인을 개발했습니다. 필요에 따라 플러그인을 추가로 수정하고 최적화할 수 있습니다. 이 글이 여러분에게 도움이 되길 바라며, 원활한 발전을 기원합니다! </p>

위 내용은 디렉토리 트리를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WordPress는 초보자에게 쉽습니까? WordPress는 초보자에게 쉽습니까? Apr 03, 2025 am 12:02 AM

WordPress는 초보자가 쉽게 시작할 수 있습니다. 1. 백그라운드에 로그인 한 후 사용자 인터페이스는 직관적이며 간단한 대시 보드는 필요한 모든 기능 링크를 제공합니다. 2. 기본 작업에는 컨텐츠 작성 및 편집이 포함됩니다. Wysiwyg 편집기는 컨텐츠 생성을 단순화합니다. 3. 초보자는 플러그인 및 테마를 통해 웹 사이트 기능을 확장 할 수 있으며 학습 곡선은 존재하지만 연습을 통해 마스터 할 수 있습니다.

WordPress는 무엇에 좋은가? WordPress는 무엇에 좋은가? Apr 07, 2025 am 12:06 AM

WordPressIsGoodForVirtSallyWebProjectDueToitsAcms.itexcelsin : 1) 사용자 친화적 인, easywebsiteseSetup; 2) 유연성 및 커스텀 화를 허용합니다

Wix 또는 WordPress를 사용해야합니까? Wix 또는 WordPress를 사용해야합니까? Apr 06, 2025 am 12:11 AM

WIX는 프로그래밍 경험이없는 사용자에게 적합하며 WordPress는 더 많은 제어 및 확장 기능을 원하는 사용자에게 적합합니다. 1) Wix는 드래그 앤 드롭 편집자와 풍부한 템플릿을 제공하여 웹 사이트를 신속하게 구축 할 수 있습니다. 2) 오픈 소스 CMS로서 WordPress는 거대한 커뮤니티 및 플러그인 생태계를 보유하고 있으며 심층적 인 사용자 정의 및 확장을 지원합니다.

WordPress 비용은 얼마입니까? WordPress 비용은 얼마입니까? Apr 05, 2025 am 12:13 AM

WordPress 자체는 무료이지만 사용 비용은 추가 비용이 필요합니다. 1. WordPress.com은 무료에서 유료에 이르는 패키지를 제공하며, 한 달에 몇 달러에서 수십 달러에 이르는 가격으로 가격이 제공됩니다. 2. WordPress.org는 도메인 이름 (연간 10-20 달러)과 호스팅 서비스 (월 5-50 달러)를 구매해야합니다. 3. 대부분의 플러그인과 테마는 무료이며 유급 가격은 수십에서 수백 달러 사이입니다. 플러그인과 테마를 합리적으로 사용하고 정기적으로 유지하고 최적화하는 올바른 호스팅 서비스를 선택함으로써 WordPress의 비용은 효과적으로 제어되고 최적화 될 수 있습니다.

왜 WordPress를 사용합니까? 왜 WordPress를 사용합니까? Apr 02, 2025 pm 02:57 PM

사람들은 힘과 유연성 때문에 WordPress를 사용하기로 선택합니다. 1) WordPress는 다양한 웹 사이트 요구에 적합한 사용 편의성 및 확장 성을 가진 오픈 소스 CM입니다. 2) 풍부한 주제와 플러그인, 거대한 생태계 및 강력한 지역 사회 지원이 있습니다. 3) WordPress의 작동 원리는 테마, 플러그인 및 핵심 기능을 기반으로하며 PHP 및 MySQL을 사용하여 데이터를 처리하며 성능 최적화를 지원합니다.

WordPress는 CMS입니까? WordPress는 CMS입니까? Apr 08, 2025 am 12:02 AM

WordPress는 CMS (Content Management System)입니다. 웹 사이트 콘텐츠의 생성 및 관리를 지원하기 위해 컨텐츠 관리, 사용자 관리, 테마 및 플러그인 기능을 제공합니다. 작업 원칙에는 데이터베이스 관리, 템플릿 시스템 및 플러그인 아키텍처가 포함되며 블로그에서 회사 웹 사이트에 이르기까지 다양한 요구에 적합합니다.

WordPress는 여전히 무료입니까? WordPress는 여전히 무료입니까? Apr 04, 2025 am 12:06 AM

WordPress의 핵심 버전은 무료이지만 사용 중에 다른 요금이 발생할 수 있습니다. 1. 도메인 이름과 호스팅 서비스에는 지불이 필요합니다. 2. 고급 테마 및 플러그인이 충전 될 수 있습니다. 3. 전문 서비스 및 고급 기능이 청구될 수 있습니다.

3 일 후에 WordPress를 배울 수 있습니까? 3 일 후에 WordPress를 배울 수 있습니까? Apr 09, 2025 am 12:16 AM

3 일 이내에 WordPress를 배울 수 있습니다. 1. 테마, 플러그인 등과 같은 마스터 기본 지식 2. 설치 및 작업 원칙을 포함한 핵심 기능을 이해하십시오. 3. 예제를 통해 기본 및 고급 사용법을 배우십시오. 4. 디버깅 기술 및 성능 최적화 제안을 이해하십시오.

See all articles