So entwickeln Sie ein WordPress-Plugin, das automatisch ein Inhaltsverzeichnis generiert

PHPz
Freigeben: 2023-09-05 08:07:44
Original
1173 Leute haben es durchsucht

So entwickeln Sie ein WordPress-Plugin, das automatisch ein Inhaltsverzeichnis generiert

So entwickeln Sie ein WordPress-Plugin, das automatisch ein Inhaltsverzeichnis generiert

Da Blogbeiträge immer inhaltsreicher werden, ist die Verbesserung des Leseerlebnisses zu einem wichtigen Gesichtspunkt geworden. Die automatische Erstellung eines Inhaltsverzeichnisses ist eine gängige Methode zur Verbesserung des Leseerlebnisses. Entwickeln Sie ein Plug-in, das automatisch ein Inhaltsverzeichnis auf der WordPress-Plattform generiert, um Lesern das schnelle Durchsuchen und Navigieren in Artikelinhalten zu erleichtern. In diesem Artikel wird erläutert, wie Sie ein WordPress-Plug-in entwickeln, das automatisch ein Inhaltsverzeichnis generiert, und relevante Codebeispiele als Referenz bereitstellen.

Zuerst müssen wir ein neues Widget (Widget) im WordPress-Plugin registrieren, um das Inhaltsverzeichnis im Artikel anzuzeigen. Das Folgende ist ein einfaches Registrierungsbeispiel eines Verzeichnis-Widgets:

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 ) {
        // 更新小部件设置
    }
}
Nach dem Login kopieren

Als nächstes müssen wir Code in die widget()-Methode des Widgets schreiben, um die Logik der Verzeichnisgenerierung zu implementieren. Zuerst müssen wir den Inhalt des Artikels abrufen und einen regulären Ausdruck verwenden, um alle Titelelemente abzugleichen. Das Folgende ist ein Beispielcode: 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输出
}
Nach dem Login kopieren

在上述代码中,我们使用了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;
}
Nach dem Login kopieren

在上述代码中,我们使用了一个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>';
}
Nach dem Login kopieren

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

Im obigen Code verwenden wir die Funktion preg_match_all(), um die Titelelemente im Artikelinhalt abzugleichen, und speichern die übereinstimmenden Ergebnisse in $matches im Array. Anschließend durchlaufen wir das Array <code>$matches und erstellen ein Array von Inhaltsverzeichniselementen $toc_items, das den Text, die Ebene und den Anker des Titels enthält.

Schließlich müssen wir eine HTML-Ausgabe in der Methode widget() des Widgets „Inhaltsverzeichnis“ generieren und im Artikel anzeigen. Hier ist der Code für ein Beispiel: 🎜rrreee🎜Im obigen Code verwenden wir eine foreach-Schleife, um das Katalogelement-Array $toc_items zu durchlaufen und die HTML-Ausgabe von zu generieren Der Katalog. Jedes Inhaltsverzeichniselement ist in das <li>-Tag eines Listenelements eingeschlossen und enthält einen Ankerlink, über den Leser klicken können, um innerhalb des Artikels zum entsprechenden Titel zu navigieren. 🎜🎜Schließlich können wir auch einige Einstellungsoptionen in der form()-Methode des Widgets hinzufügen, damit Benutzer den im Verzeichnis angezeigten Titel anpassen können. Hier ist ein einfacher Beispielcode: 🎜rrreee🎜 Im obigen Code verwenden wir ein Formularelement input, um dem Benutzer die Eingabe eines benutzerdefinierten Verzeichnistitels zu ermöglichen. Dieser Wert wird in den Einstellungen des Plugins gespeichert und in der Methode widget() des Widgets verwendet. 🎜🎜Durch das obige Codebeispiel können wir ein Plug-in entwickeln, das automatisch ein Inhaltsverzeichnis basierend auf der WordPress-Plattform generiert, um das Leseerlebnis von Blog-Artikeln zu verbessern. Leser können Artikelinhalte schnell durchsuchen und navigieren, indem sie auf Links im Inhaltsverzeichnis klicken. Durch die Entwicklung Ihres eigenen WordPress-Plugins können Sie es entsprechend den tatsächlichen Anforderungen erweitern und anpassen und so den Lesern ein besseres Benutzererlebnis bieten. 🎜

Das obige ist der detaillierte Inhalt vonSo entwickeln Sie ein WordPress-Plugin, das automatisch ein Inhaltsverzeichnis generiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!