> CMS 튜토리얼 > Word누르다 > 목차를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

목차를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

PHPz
풀어 주다: 2023-09-05 08:07:44
원래의
1209명이 탐색했습니다.

목차를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

목차를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법

블로그 게시물의 콘텐츠가 점점 더 풍부해짐에 따라 읽기 경험을 개선하는 것이 중요한 고려 사항이 되었습니다. 목차를 자동으로 생성하는 것은 독서 경험을 향상시키는 일반적인 방법입니다. 독자가 기사 콘텐츠를 빠르게 탐색하고 탐색할 수 있도록 WordPress 플랫폼에서 자동으로 목차를 생성하는 플러그인을 개발합니다. 이 글에서는 목차를 자동으로 생성하는 WordPress 플러그인을 개발하는 방법을 소개하고, 참고할 수 있는 관련 코드 예제를 제공합니다.

먼저, 기사의 목차를 표시하려면 WordPress 플러그인에 새 위젯(Widget)을 등록해야 합니다. 다음은 디렉터리 위젯의 간단한 등록 예입니다.

class AutoTOC_Widget extends WP_Widget {
    
    public function __construct() {
        parent::__construct(
            'auto_toc_widget',
            '自动生成目录',
            array( 'description' => '在文章中自动生成目录' )
        );
    }
    
    public function widget( $args, $instance ) {
        // 在文章中显示自动生成的目录
    }
    
    public function form( $instance ) {
        // 小部件设置表单
    }
    
    public function update( $new_instance, $old_instance ) {
        // 更新小部件设置
    }
}
로그인 후 복사

다음으로 디렉터리 생성 논리를 구현하기 위해 위젯의 widget() 메서드에 코드를 작성해야 합니다. 먼저 기사의 내용을 가져와서 정규 표현식을 사용하여 모든 제목 요소를 일치시켜야 합니다. 다음은 예제 코드입니다. widget()方法中编写代码来实现目录生成的逻辑。首先,我们需要获取文章的内容,并使用正则表达式来匹配所有标题元素。以下是一个示例的代码:

public function widget( $args, $instance ) {
    global $post;
    
    $post_id = $post->ID;
    $post_content = $post->post_content;
    
    // 正则表达式匹配所有标题元素
    preg_match_all( '/<h([1-6])>(.*?)</h>/', $post_content, $matches, PREG_SET_ORDER );
    
    $toc_items = array();
    
    // 构建目录项数组
    foreach ( $matches as $match ) {
        $toc_item = array(
            'title' => $match[2],
            'level' => $match[1],
            'anchor' => sanitize_title( $match[2] )
        );
        
        $toc_items[] = $toc_item;
    }
    
    // 显示目录部件的HTML输出
}
로그인 후 복사

在上述代码中,我们使用了preg_match_all()函数来匹配文章内容中的标题元素,并将匹配结果存储在$matches数组中。然后,我们遍历$matches数组,构建一个目录项数组$toc_items,其中包含标题的文本、级别和锚点。

最后,我们需要在目录小部件的widget()方法中生成HTML输出并显示在文章中。以下是一个示例的代码:

public function widget( $args, $instance ) {
    global $post;
    
    $post_id = $post->ID;
    
    // 生成目录HTML输出
    $output = '<div class="auto-toc">';
    $output .= '<h2 class="widget-title">' . $instance['title'] . '</h2>';
    $output .= '<ul>';
    
    foreach ( $toc_items as $item ) {
        $output .= '<li><a href="#' . $item['anchor'] . '">' . $item['title'] . '</a></li>';
    }
    
    $output .= '</ul>';
    $output .= '</div>';
    
    echo $output;
}
로그인 후 복사

在上述代码中,我们使用了一个foreach循环来遍历目录项数组$toc_items,生成目录的HTML输出。每个目录项都被包装在一个列表项的<li>标签中,并包含一个锚点链接,使读者能够通过点击在文章中导航到相应的标题处。

最后,我们还可以通过在小部件的form()方法中添加一些设置选项,让用户能够自定义目录显示的标题。以下是一个简单的示例代码:

public function form( $instance ) {
    $title = isset( $instance['title'] ) ? $instance['title'] : '目录';
    
    echo '<p>';
    echo '<label for="' . $this->get_field_id( 'title' ) . '">标题:</label>';
    echo '<input class="widefat" id="' . $this->get_field_id( 'title' ) . '" name="' . $this->get_field_name( 'title' ) . '" type="text" value="' . esc_attr( $title ) . '">';
    echo '</p>';
}
로그인 후 복사

在上述代码中,我们使用了一个input表单元素,允许用户输入自定义的目录标题。该值将被保存在插件的设置中,并在小部件的widget()rrreee

위 코드에서는 preg_match_all() 함수를 사용하여 기사 콘텐츠의 제목 요소를 일치시키고 일치하는 결과를 $matches에 저장합니다. 배열. 그런 다음 <code>$matches 배열을 반복하고 제목의 텍스트, 수준 및 앵커가 포함된 목차 항목 $toc_items의 배열을 만듭니다.

마지막으로 목차 위젯의 widget() 메서드에서 HTML 출력을 생성하고 이를 기사에 표시해야 합니다. 예를 들어 코드는 다음과 같습니다. 🎜rrreee🎜위 코드에서는 foreach 루프를 사용하여 카탈로그 항목 배열 $toc_items를 반복하고 다음의 HTML 출력을 생성합니다. 카탈로그. 각 목차 항목은 목록 항목의 <li> 태그로 둘러싸여 있으며 독자가 클릭하여 기사 내에서 해당 제목으로 이동할 수 있는 앵커 링크를 포함합니다. 🎜🎜마지막으로 위젯의 form() 메서드에 몇 가지 설정 옵션을 추가하여 사용자가 디렉터리에 표시되는 제목을 사용자 정의할 수 있습니다. 다음은 간단한 샘플 코드입니다. 🎜rrreee🎜 위 코드에서는 input 양식 요소를 사용하여 사용자가 사용자 정의 디렉토리 제목을 입력할 수 있도록 했습니다. 이 값은 플러그인 설정에 저장되며 위젯의 widget() 메소드에서 사용됩니다. 🎜🎜위의 코드 예제를 통해 WordPress 플랫폼을 기반으로 목차를 자동으로 생성하여 블로그 기사의 읽기 경험을 향상시키는 플러그인을 개발할 수 있습니다. 독자는 목차에 있는 링크를 클릭하여 기사 내용을 빠르게 탐색하고 탐색할 수 있습니다. 자신만의 WordPress 플러그인을 개발하면 실제 필요에 따라 확장 및 사용자 정의할 수 있어 독자에게 더 나은 사용자 경험을 제공할 수 있습니다. 🎜

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿