Upload
others
View
0
Download
0
Embed Size (px)
WordPress
#wordpress
Inhaltsverzeichnis
Über 1
Kapitel 1: Erste Schritte mit WordPress 2
Bemerkungen 2
Versionen 3
Examples 5
Einführung in WordPress 5
WordPress-Themes 5
Zuordnen von URLs zu bestimmten Vorlagen 5
Grundlegende Themenverzeichnisstruktur 6
Beispiel eines "Single" (Vorlage für einen einzelnen Beitrag) 6
Beispiel eines "Archivs" (Vorlage für eine Liste mehrerer Beiträge) 7
Beiträge, Seiten, benutzerdefinierte Beitragstypen und benutzerdefinierte Felder 7
Kapitel 2: add_action () 9
Syntax 9
Parameter 9
Examples 9
Direkter Funktionsrückruf 9
Funktionsname-Referenzrückruf 9
Rückruf einer statischen Methode der Klasse 10
Callback der Objektmethode 10
Kapitel 3: add_editor_style () 11
Einführung 11
Syntax 11
Parameter 11
Examples 11
Laden einer einzelnen CSS-Datei 11
Kapitel 4: add_menu_page () 12
Einführung 12
Syntax 12
Parameter 12
Bemerkungen 12
Examples 13
Hinzufügen des Elements "Titelseitentitel" zur Navigationsleiste 13
OOP & wie man Skripte / Stile auf der Menüseite lädt 14
Kapitel 5: add_submenu_page () 16
Einführung 16
Syntax 16
Parameter 16
Bemerkungen 16
Examples 17
Hinzufügen der "Untermenüseite" als Unterseite von "Tools" zur Navigationsleiste 17
Kapitel 6: add_theme_support () 19
Einführung 19
Syntax 19
Parameter 19
Bemerkungen 19
Examples 19
Theme-Unterstützung für Postformate hinzufügen 19
Theme-Unterstützung für Post-Thumbnails zu Posts hinzufügen 19
Kapitel 7: Admin-Dashboard-Widgets 21
Einführung 21
Syntax 21
Parameter 21
Examples 21
Einfaches Widget (Text anzeigen) 22
Kapitel 8: AJAX 23
Examples 23
AJAX-Anfrage mit einer JSON-Antwort 23
AJAX mit .ajax () und WordPress Nonce 24
wp_ajax - Kernfunktionalität + _wpnonce check 25
OOP-Ajax-Einreichung unter Verwendung einer einfachen Klasse mit Nonce 26
Kapitel 9: Aktionen und Filter 30
Syntax 30
Parameter 30
Bemerkungen 30
Examples 33
add_action - init 33
add_action - init - anonyme Funktion 33
add_action - init - innerhalb eines Klassenobjekts 34
add_action - init - innerhalb der statischen Klasse 34
Kapitel 10: Aktualisieren Sie WordPress manuell 35
Examples 35
Über FTP 35
Kapitel 11: Alternierende Hauptschleife (Filter pre_get_posts) 36
Syntax 36
Parameter 36
Bemerkungen 36
Examples 36
Noch spezifischeres Loop-Targeting 36
Zeige Beiträge aus nur einer Kategorie 37
Beiträge vor dem Abrufen von Posts filtern die grundlegende Verwendung 37
Kategorie aus der Beitragsliste entfernen freigeben 37
Ändern Sie posts_per_page für die Hauptschleife 38
Targeting nur für die Haupt-WordPress-Schleife 38
Kapitel 12: Beiträge abfragen 39
Syntax 39
Parameter 39
Bemerkungen 39
Verwenden Sie niemals query_posts () 39
Examples 40
WP_Query () Objekt verwenden 40
Get_posts () verwenden 40
Kapitel 13: Benutzerdefinierte Auszüge mit excerpt_length und excerpt_more 42
Examples 42
Begrenzen Sie die Länge des Auszugs auf 50 Wörter 42
Hinzufügen eines Links "Lesen Sie mehr" am Ende des Auszuges 42
Ein paar Punkte am Ende des Ausschnitts hinzufügen 43
Kapitel 14: Benutzerdefinierte Beitragstypen 45
Syntax 45
Parameter 45
Examples 45
Registrieren eines benutzerdefinierten Beitragstyps 45
Hinzufügen von benutzerdefinierten Beitragstypen zur Hauptabfrage 46
Hinzufügen von benutzerdefinierten Beitragstypen zum Haupt-RSS-Feed 47
Registrieren Sie den benutzerdefinierten Beitragstyp 47
Benutzerdefinierter Beitragstyp mit fünfundzwanzig WordPress-Design 48
Benutzerdefinierter Beitragstyp in der Standardsuche 49
Kapitel 15: Customizer Hallo Welt 50
Parameter 50
Examples 50
Hallo Weltbeispiel 50
Kapitel 16: Customizer-Grundlagen (Panel hinzufügen, Abschnitt, Einstellungen, Steuerung) 52
Examples 52
Fügen Sie ein Customizer-Panel hinzu 52
Fügen Sie einen Customizer-Abschnitt mit den Grundeinstellungen und ihren Steuerelementen 52
Kapitel 17: Das $ wpdb-Objekt 56
Bemerkungen 56
Examples 56
Variable auswählen 56
Mehrere Zeilen auswählen 56
Kapitel 18: Debuggen 58
Einführung 58
Bemerkungen 58
Examples 58
WP_DEBUG 58
WP_DEBUG_LOG 58
WP_DEBUG_DISPLAY 59
SCRIPT_DEBUG 59
SAVEQUERIES 59
Beispiel wp-config.php und bewährte Methoden zum Debuggen 59
Protokolle in einer separaten Datei anzeigen 60
Kapitel 19: der Titel() 61
Einführung 61
Syntax 61
Parameter 61
Bemerkungen 61
Examples 61
Einfache Verwendung von the_title 61
Den Titel mit Code vor und nach drucken 61
Kapitel 20: Die Admin-Leiste (aka "Die Symbolleiste") 63
Bemerkungen 63
Examples 63
Entfernen der Admin-Symbolleiste von allen außer Administratoren 63
Entfernen der Admin-Symbolleiste mithilfe von Filtern 63
So entfernen Sie das WordPress-Logo aus der Admin-Leiste 63
Fügen Sie auf der Admin-Anmeldeseite Ihr eigenes Logo und Ihren benutzerdefinierten Link h 64
Kapitel 21: Die Schleife (Haupt-WordPress-Schleife) 65
Examples 65
Grundlegende WordPress-Schleifenstruktur 65
Alternative Schleifensyntax 65
Behandelt keine Elemente in der Schleife 65
Kapitel 22: drin 67
Syntax 67
Bemerkungen 67
Examples 67
$ _POST-Anforderungsdaten werden verarbeitet 67
$ _GET-Anforderungsdaten werden verarbeitet 67
Registrieren eines benutzerdefinierten Beitragstyps 67
Kapitel 23: Einreihen von Skripten 68
Syntax 68
Parameter 68
Examples 68
Einreihen von Skripten in functions.php 68
Enqueue-Skripts nur für IE 69
Skripte für bestimmte Seiten bedingt einreihen 69
Kapitel 24: Einreihen von Styles 71
Syntax 71
Parameter 71
Examples 71
Einschließlich der internen CSS-Datei mit einer anderen CSS-Datei als Abhängigkeit 71
Einschließlich der internen CSS-Datei 71
Einschließlich externer CSS-Datei 71
Enqueue Stylesheets nur für IE 72
Einschließlich der internen CSS-Datei für Ihre Plugin-Klasse 72
Alternative Stylesheets hinzufügen 72
Kapitel 25: Entfernen Sie automatische Zeilenumbrüche aus Inhalt und Auszug 74
Einführung 74
Bemerkungen 74
Examples 74
Entfernen Sie die Filter 74
Funktion zum Entfernen der Filter 74
Kapitel 26: Erstellen einer benutzerdefinierten Vorlage 76
Examples 76
Erstellen einer einfachen leeren Vorlage 76
Einschließlich Kopf- und Fußzeile in unserer Vorlage 77
Benutzerdefinierte Vorlage mit Inhalt 78
Kapitel 27: Erstellen Sie einen Beitrag programmgesteuert 80
Syntax 80
Parameter 80
Bemerkungen 80
Argumente 80
Vermeiden Sie doppelte Beiträge 82
Erläuterung 82
Examples 82
Einführung 82
Erstellen Sie einen Basisbeitrag 82
Erstellen Sie eine Basisseite 83
Kapitel 28: Erstellung des WordPress-Plugins 84
Einführung 84
Examples 84
Minimale Einrichtung eines Plugin-Ordners und von Dateien 84
Kapitel 29: Führen Sie WordPress local mit XAMPP aus 86
Einführung 86
Examples 86
1. Installieren von XAMPP 86
2. Richten Sie nach der Installation von XAMPP eine Datenbank ein 86
3. Installieren von WordPress nach dem Einrichten der Datenbank 87
Kapitel 30: Funktion: add_action () 88
Syntax 88
Parameter 88
Bemerkungen 88
Examples 88
Grundlegender Aktionshaken 88
Aktion Hook-Priorität 89
Klassen- und Objektmethoden mit Aktionen verknüpfen 89
Objektmethode Aktionshaken 90
Klassenmethode Aktionshaken 91
Kapitel 31: Funktion: wp_trim_words () 93
Syntax 93
Parameter 93
Examples 93
Post-Inhalt beschneiden 93
Kapitel 32: get_bloginfo () 94
Einführung 94
Syntax 94
Parameter 94
Bemerkungen 94
Examples 96
Den Seitentitel abrufen 96
Den Site-Slogan erhalten 97
Abrufen der aktiven Design-URL 98
Rufen Sie die Site-URL ab 99
Erhalten Sie die E-Mail-Adresse des Site-Administrators 99
Kapitel 33: get_home_path () 100
Einführung 100
Parameter 100
Bemerkungen 100
Wichtiger Unterschied zwischen get_home_path() und ABSTPATH 100
Verwenden Sie es in Ihrem Code 101
Examples 101
Verwendungszweck 101
Kapitel 34: get_option () 102
Einführung 102
Syntax 102
Parameter 102
Bemerkungen 102
Examples 102
Blogtitel anzeigen 102
Name des Blogs im H1-Stil 103
Zeichensatz anzeigen 103
Behandlung nicht vorhandener Optionen 103
Kapitel 35: get_permalink () 104
Einführung 104
Syntax 104
Parameter 104
Bemerkungen 104
Examples 104
Einfache Verwendung von get_parmalink 104
Angabe des Beitrags zum Abrufen des Links 104
Holen Sie sich den Link ohne den Namen des Beitrags 105
Kapitel 36: get_template_part () 106
Syntax 106
Parameter 106
Examples 106
Laden Sie einen Vorlagenteil aus einem Unterordner 106
Holen Sie sich eine bestimmte Datei 106
Kapitel 37: get_template_part () 107
Einführung 107
Syntax 107
Parameter 107
Examples 107
Einschließlich einer benutzerdefinierten Vorlage 107
Einschließlich einer benutzerdefinierten Vorlage mit einem durch Bindestrich getrennten Da 107
Einschließlich einer benutzerdefinierten Vorlage aus einem Verzeichnis 108
Einschließlich einer benutzerdefinierten Vorlage mit einem durch Bindestrich getrennten Da 108
Übergabe der Variable an den benutzerdefinierten Vorlagenbereich 108
Kapitel 38: get_template_part () 109
Syntax 109
Parameter 109
Examples 109
Vorlage laden 109
Kapitel 39: get_the_category () 110
Einführung 110
Syntax 110
Parameter 110
Bemerkungen 110
Examples 110
Holen Sie sich alle Namen der Kategorien des Beitrags 111
Holen Sie sich alle IDs der Kategorien des Beitrags 111
Kapitel 40: get_the_title () 112
Einführung 112
Syntax 112
Parameter 112
Bemerkungen 112
Examples 112
Einfache Verwendung von get_the_title 112
Ruft den Titel einer angegebenen Beitrags-ID ab 112
Kapitel 41: Grundlegendes zum Thema Kind 114
Syntax 114
Bemerkungen 114
Examples 114
2) Der Zweck 114
Definition und Anforderungen 115
3) Überschreiben der Vorlage 115
Ersatz von Vermögenswerten 116
Kapitel 42: Hinzufügen / Entfernen von Kontaktinformationen für Benutzer mit dem Filterhak 118
Examples 118
Aktivieren der beliebtesten sozialen Netzwerke 118
Kontaktmethode entfernen 119
Kapitel 43: home_url () 120
Syntax 120
Parameter 120
Examples 120
Abrufen der Heimat-URL 120
Seiten-URL 120
Kapitel 44: Installation und Konfiguration 121
Examples 121
Wordpress auf LAMP 121
Installation WP in MAMP 122
Kapitel 45: Kurzcode 124
Examples 124
Kurzcode registrieren 124
Verwenden von Shortcodes in WordPress Backend 124
Neue Shortcodes hinzufügen 124
Verwenden von Shortcodes in PHP-Code (Designs und Plugins) 125
Verwenden von Shortcodes in Widgets 125
Kapitel 46: Kurzcode mit Attribut 126
Syntax 126
Parameter 126
Bemerkungen 126
Examples 126
Beispiele für Shortcodes 126
Erstellen eines selbstschließenden Shortcodes 127
Erstellen eines selbstschließenden Kurzcodes mit Parametern 127
Erstellen eines umschließenden Kurzcodes 127
Kurzwahlen in Widgets 128
Kapitel 47: Kurzwahlnummern 130
Examples 130
Shortcode-Einführung 130
Tastenkürzel 130
Kapitel 48: Meta Box 132
Einführung 132
Syntax 132
Bemerkungen 132
Examples 132
Ein einfaches Beispiel mit einer regulären Eingabe und einer Auswahleingabe 132
Kapitel 49: Netzwerkanfragen mit HTTP-API durchführen 135
Syntax 135
Parameter 135
Bemerkungen 135
Kehrt zurück 135
Examples 135
Rufen Sie eine Remote-JSON-Ressource ab 135
Kapitel 50: Options-API 136
Einführung 136
Syntax 136
Bemerkungen 136
Examples 136
get_option 137
add_option 137
delete_option 137
update_option 137
Kapitel 51: Plugin-Entwicklung 138
Syntax 138
Parameter 138
Bemerkungen 138
Examples 139
Filter 139
Aktion 139
Entwicklungsbeispiele für Plugins: Favorite Song Widget 139
Kapitel 52: Postformate 142
Bemerkungen 142
Examples 142
Hinzufügen eines Beitragstyps zum Thema 142
Postformate zu post_type 'page' hinzufügen 142
Registrieren Sie den benutzerdefinierten Beitragstyp "my_custom_post_type". 143
Postformate zu post_type 'my_custom_post_type' hinzufügen 143
Registrieren Sie den benutzerdefinierten Beitragstyp "my_custom_post_type" mit dem Paramet 143
Theme-Support für den Beitrag hinzufügen 143
Funktionsaufruf 143
Kapitel 53: REST-API 144
Einführung 144
Bemerkungen 144
Examples 145
Vollständiges Arbeitsbeispiel 145
Kapitel 54: Seitenleisten 147
Syntax 147
Parameter 147
Bemerkungen 147
Examples 147
Sidebars registrieren 148
Holen Sie sich die Sidebar 148
Kapitel 55: Shortcode hinzufügen 149
Syntax 149
Parameter 149
Bemerkungen 149
Examples 149
Einfacher Kurzcode für den letzten Beitrag 149
Erweiterter Shortcode für aktuelle Beiträge 150
Kapitel 56: Sicherheit in WordPress - Desinfektion 151
Syntax 151
Bemerkungen 151
Examples 151
Textfeld desinfizieren 151
Titel desinfizieren 151
E-Mail bereinigen 152
HTML-Klasse desinfizieren 152
Bereinigen Sie den Dateinamen 152
Bereinigen Sie den Benutzernamen 152
Kapitel 57: Sicherheit in WordPress - Flucht 153
Syntax 153
Bemerkungen 153
Examples 153
Escape-Daten im HTML-Code 153
einer URL entkommen 153
Escape-Daten in js-Code 154
Escape-Attribute 154
Escape-Daten im Textbereich 154
Kapitel 58: Sichern Sie Ihre Installation 155
Bemerkungen 155
Examples 155
Deaktivieren Sie den Datei-Editor 155
Verschiebe wp-config.php 155
Legen Sie ein benutzerdefiniertes Präfix für WordPress-Tabellen fest 156
Kapitel 59: Standortmigration 161
Syntax 161
Examples 161
Aktualisieren der Tabellen mit einer neuen URL 161
Kapitel 60: Taxonomien 162
Syntax 162
Parameter 162
Examples 162
Beispiel für die Registrierung einer Taxonomie für Genres 162
Kategorie auf Seite hinzufügen 163
Fügen Sie Kategorien und Tags Seiten hinzu und fügen Sie sie als Klasse ein 163
Fügen Sie Kategorien und Tags Seiten hinzu und fügen Sie sie als Klasse ein 164
Kapitel 61: template_include 166
Parameter 166
Bemerkungen 166
Examples 166
Einfaches Beispiel 166
Mehr Adv Beispiel 167
Kapitel 62: Themes 168
Einführung 168
Examples 168
WordPress-Themes 168
Wie wählt man ein Thema aus? 168
Update verfügbar 168
Installieren Sie Themes 169
Erstellen eines benutzerdefinierten Designs 170
Kapitel 63: Version von Wordpress und Stylesheets entfernen 172
Einführung 172
Syntax 172
Parameter 172
Bemerkungen 172
Examples 172
Entfernen Sie die Versionsnummern von css / js 172
Versionsnummern aus WordPress entfernen 173
Kapitel 64: Vorlage für benutzerdefinierten Beitragstyp erstellen 174
Examples 174
Erstellen einer benutzerdefinierten Vorlage für das Buch "Benutzerdefiniertes Post" 174
Benutzerdefinierte Beitragstypvorlagen 174
Benutzerdefiniertes Beitragstyp-Archiv: 174
Individuelle Post Type Einzelvorlage: 176
Kapitel 65: Vorlagenhierarchie 178
Bemerkungen 178
Examples 178
Einführung 178
Debuggen 180
Kapitel 66: Wie kann ich den Markdown-Editor in das Repeater-Add-on von Advance Custom Fie
181
Examples 181
MarkDown Editor hinzufügen 181
Kapitel 67: Wordpress-Theme und Child-Theme-Entwicklung 182
Einführung 182
Examples 182
Entwickeln Sie Ihr eigenes Thema 182
Kapitel 68: wp_get_current_user () 185
Syntax 185
Examples 185
Den aktuellen Benutzer abrufen 185
Verwenden Sie die foreach-Schleife, um Benutzerinformationen von wp_get_current_user () ab 185
Kapitel 69: wp_get_current_user () 186
Examples 186
Aktuelle Informationen zum angemeldeten Benutzer erhalten 186
Kapitel 70: WP_Query () Schleife 187
Einführung 187
Examples 187
Letzte 10 Beiträge abrufen 187
Kapitel 71: WP-CLI 188
Einführung 188
Examples 188
Themen verwalten 188
Plugins verwalten 188
WP-CLI selbst verwalten 189
Laden Sie eine WordPress-Installation herunter, installieren, aktualisieren und verwalten 190
Benutzer verwalten 190
Führen Sie grundlegende Datenbankoperationen mit den in wp-config.php gespeicherten Berech 190
Kapitel 72: WP-Cron 192
Examples 192
wp_schedule_event () Beispiel 192
benutzerdefiniertes Wiederholungsintervall in wp_schedule_event () 192
Credits 194
Über
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: wordpress
It is an unofficial and free WordPress ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official WordPress.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/de/home 1
Kapitel 1: Erste Schritte mit WordPress
Bemerkungen
WordPress ist ein Open Source Content Management System (CMS), mit dem Websites erstellt und verwaltet werden. WordPress ist das beliebteste CMS im Internet nach einer Landmeile, das zum Zeitpunkt der Erstellung etwa die Hälfte aller CMS-Websites und etwa ein Viertel aller Websites im Internet unterstützt.
WordPress wurde ursprünglich als Plattform für das Bloggen ins Leben gerufen, hat sich jedoch im Laufe der Jahre zu den meisten Arten von Websites entwickelt. Die Schnittstelle kann ohne Programmierkenntnisse verwendet werden, was sie für Einsteiger und Entwickler beliebt macht, die ihre Kunden zur Verwaltung ihrer eigenen Website befähigen möchten.
Ein weiterer wichtiger Faktor für die Beliebtheit von WordPress ist seine Flexibilität, hauptsächlich aufgrund des Plugins und der Themingsysteme des Kerns. Das Plugin-System macht es einfach, die Kernfunktionalität zu erweitern, ohne den Kerncode zu ändern. In ähnlicher Weise macht es das Themingsystem leicht, das Layout und die Ästhetik der Website zu ändern. Es gibt jetzt Tausende von kostenlosen und hochwertigen WordPress-Plugins und Designs. Viele von ihnen sind auf der wordpress.org befindet Plugin - Repository und Thema Repository sind.
WordPress wurde von der eigenen Community entwickelt, ist jedoch eng mit der Firma Automattic verbunden , die viele der wichtigsten WordPress-Entwickler beschäftigt.
https://riptutorial.com/de/home 2
Code
WordPress basiert auf der PHP -Serverskriptsprache und der MySQL- Abfragesprache. WordPress verwendet MySQL als Datastore für Benutzerinhalte und -konfigurationen. Das PHP zerlegt die Inhaltsdaten in eine HTML- Webseite mit allen erforderlichen Ressourcen.
wordpress.com vs wordpress.org
Sie können WordPress verwenden, indem Sie sich bei Automattics wordpress.com- Dienst anmelden und Ihre Website auf ihren Servern hosten. Sie können die WordPress-Software von wordpress.org herunterladen und Ihre Website auf einem Server unter Ihrer Kontrolle hosten. Die erste Option ist einfach, aber Sie können keinen Site-Code bearbeiten. Sie können Änderungen nur über die WordPress-Benutzeroberfläche vornehmen. Die zweite Option erfordert mehr Arbeit, gibt Ihnen jedoch die Flexibilität, mit Ihrem Website-Code alles zu tun, was Sie möchten. Wenn Sie ein StackOverflow-Benutzer sind, werden Sie wahrscheinlich die zweite Option wählen.
Open Source
WordPress ist Open-Source-Software, dh es ist kostenlos, und jeder kann den Quellcode einsehen und dazu beitragen. Potentielle Mitwirkende können mit der Beitragsseite des WordPress-Codex beginnen. .
Fehler können gemeldet werden, indem Sie einen Fehler an den WordPress-Ticket-Tracker senden .
Dokumentation
WordPress ist offiziell im WordPress-Codex von WordPress.org dokumentiert. Entwickler, die mit WordPress arbeiten, interessieren sich besonders für den Abschnitt Developer Codex und Developer Reference von wordpress.org .
Versionen
Ausführung Veröffentlichungsdatum
1,0 2004-01-03
1.2 2004-05-22
1,5 2005-02-17
2,0 2005-12-26
2.1 2007-01-22
2.2 2007-05-16
2.3 2007-09-24
https://riptutorial.com/de/home 3
Ausführung Veröffentlichungsdatum
2,5 2008-03-29
2.6 2008-07-15
2,7 2008-12-10
2.8 2009-06-10
2,9 2009-12-18
3,0 2010-06-17
3.1 2011-02-23
3.2 2011-07-04
3.3 2011-12-12
3.4 2012-06-13
3,5 2012-12-11
3.6 2013-08-01
3.7 2013-10-24
3.8 2013-12-12
3.9 2014-04-16
4,0 2014-09-04
4.1 2014-12-17
4.2 2015-04-23
4.3 2015-08-18
4.4 2015-12-08
4,5 2016-04-12
4.6 2016-08-16
4.7 2016-12-06
4,8 2017-06-08
https://riptutorial.com/de/home 4
Examples
Einführung in WordPress
WordPress [WP] ist ein Open Source Content Management System zum Erstellen von Apps, Websites und Blogs. WP ist in PHP geschrieben und verwendet MySQL als Datenspeicher für den Benutzerinhalt und die Konfiguration. Es verfügt über ein reichhaltiges Ökosystem an Plugins und Themes und verfügt über eine lebendige Open-Source-Community, gute Dokumentation und niedrige Eintrittsbarrieren. Usability und Entwicklerdokumentation finden Sie im WP Codex .
Ein Teil von WordPress, der es von den meisten anderen CMS-Produkten unterscheidet, ist die ereignisgesteuerte Programmierung . Dies ist eine andere Art der Programmierung und Logikdarstellung als die MVC-Architektur (Model View Controller), die von den meisten CMS-Systemen verwendet wird. WordPress verwendet die Konzepte von Aktionen und Filtern. Sie bilden eine Warteschlange mit Ereignissen, mit denen Plugins und Designs Teile der endgültigen Webanwendungsseite und / oder Teile einfügen, ändern oder sogar entfernen können. Ein ähnliches Konzept ist JIT oder Just-In-Time Compilieren.
Während WordPress seit jeher als Blogging-Plattform bekannt ist und dieses Stigma niemals verliert, hat sich der Fokus des WordPress-Kernteams eindeutig geändert. Mit dem Zustand des Wortes 2016 von Gründer Matthew Mullenweg sehen wir eine klare Verschiebung bei Zielen, Visionen und Anstrengungen. Im Jahr 2016 haben wir erstaunliche Fortschritte gesehen, als der WordPress-Kern die Mehrheit des sehr populären REST-API-Plugins übernahm . Dies war eindeutig eine Absicht des Kernteams, als es schon früh mit dem Aufbau eines Front-End-JavaScript-CMS-Administrationspanels begann, das sich vom goldenen Standard löst, den wir seit vielen Jahren kennen. Sie nannten es Calpyso .
WordPress-Themes
Zuordnen von URLs zu bestimmten Vorlagen
Um WordPress-Themes vollständig zu verstehen, müssen Sie zwei Hauptkonzepte verstehen:
Permalinks1. Die Vorlagenhierarchie2.
Ein Permalink ist eine permanente, nicht veränderliche URL (oder ein Link zu einer bestimmten Ressource. Beispiel:
example.com/about-us/ (eine Seite in WP)•example.com/services/ (eine Auflistung mehrerer Elemente, im WP-Jargon auch "Archiv" genannt)
•
example.com/services/we-can-do-that-for-you/ (ein einzelner Artikel)•
Wenn ein Benutzer eine URL anfordert, entwickelt WordPress den Permalink zurück, um herauszufinden, welche Vorlage sein Layout steuern soll. WordPress sucht nach den
https://riptutorial.com/de/home 5
verschiedenen Vorlagendateien, die diesen bestimmten Inhalt steuern könnten , und bevorzugt schließlich die spezifischsten, die es findet. Dies wird als Vorlagenhierarchie bezeichnet.
Sobald WP die entsprechende Ansichtsvorlage in der Hierarchie gefunden hat, verwendet sie diese Datei zum Verarbeiten und Rendern der Seite.
Beispiel: index.php (die Standardvorlage "catch-all") wird von archive.php (der Standardvorlage für auf Listen basierenden Inhalt) überschrieben, die wiederum von archive-services.php (einer Vorlage) überschrieben wird Datei speziell für das Archiv mit dem Namen "Services").
Hier ist eine großartige visuelle Referenz für die Vorlagenhierarchie
Grundlegende Themenverzeichnisstruktur
Ein einfaches Thema sieht ungefähr so aus:
// Theme CSS style.css // Custom functionality for your theme functions.php // Partials to include in subsequent theme files header.php footer.php sidebar.php comments.php // "Archives", (listing views that contain multiple posts) archive.php author.php date.php taxonomy.php tag.php category.php // Individual content pages // Note that home and frontpage templates are not recommended // and they should be replaced by page templates singular.php single.php page.php front-page.php home.php // Misc. Utility Pages index.php (a catch-all if nothing else matches) search.php attachment.php image.php 404.php
Beispiel eines "Single" (Vorlage für einen
https://riptutorial.com/de/home 6
einzelnen Beitrag)
<?php get_header(); ?> <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <h1><?php the_title(); ?></h1> <?php the_content(); ?> <?php comments_template( '', true ); ?> <?php endwhile; ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Was passiert hier? Zuerst wird header.php (ähnlich wie bei einem PHP-Include oder header.php ), es wird The Loop eingerichtet, zeigt the_title und the_content und the_content dann comments.php , sidebar.php und footer.php . Die Schleife übernimmt das schwere Anheben und richtet ein Post Objekt ein, das alle Informationen für den aktuell angezeigten Inhalt enthält.
Beispiel eines "Archivs" (Vorlage für eine Liste mehrerer Beiträge)
<?php get_header(); ?> <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <a href="<?php the_permalink(); ?>"<?php the_title(); ?></a> <?php the_excerpt(); ?> <?php endwhile; ?> <?php next_posts_link( 'Older Entries', $the_query->max_num_pages ); previous_posts_link( 'Newer Entries' ); ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Zuerst enthält es header.php , richtet The Loop ein und enthält sidebar.php und footer.php . In diesem Fall befinden sich jedoch mehrere Beiträge in der Schleife, daher wird stattdessen ein Auszug mit einem Link zu den einzelnen Beiträgen angezeigt. next_posts_link und previous_posts_link sind ebenfalls enthalten, sodass das Archiv Ergebnisse paginieren kann.
Beiträge, Seiten, benutzerdefinierte Beitragstypen und benutzerdefinierte Felder
WordPress unterstützt zwei Arten von Inhalten: Posts und Pages . Posts werden normalerweise für nicht hierarchische Inhalte wie Blog-Posts verwendet. Seiten werden für statische, eigenständige
https://riptutorial.com/de/home 7
Inhalte verwendet, beispielsweise eine Seite "Über uns" oder die Seite "Services" eines Unternehmens mit verschachtelten Unterseiten.
Seit Version 3.0 können Entwickler eigene benutzerdefinierte Post-Typen definieren, um die Funktionalität von WordPress über die Grundlagen hinaus zu erweitern. Neben benutzerdefinierten Beitragstypen können Sie auch eigene benutzerdefinierte Felder erstellen, die Sie an Ihre Beiträge / Seiten / benutzerdefinierten Beitragstypen anhängen können, um auf strukturierte Weise das Hinzufügen und den Zugriff auf Metadaten in Ihren Vorlagen zu ermöglichen. Siehe: Erweiterte benutzerdefinierte Felder .
Erste Schritte mit WordPress online lesen: https://riptutorial.com/de/wordpress/topic/304/erste-schritte-mit-wordpress
https://riptutorial.com/de/home 8
Kapitel 2: add_action ()
Syntax
add_action ($ tag, $ function_to_add)•add_action ($ tag, $ function_to_add, $ priority)•add_action ($ tag, $ function_to_add, $ Priorität, $ akzeptierte_args)•
Parameter
Parameter Einzelheiten
$ tag(Zeichenfolge) Der Name der Aktion, an die die Prozedur $function_to_add angehängt wird.
$ function_to_add
(aufrufbar) Die aufrufbare Funktion / Prozedur, die Sie anrufen möchten.
$ Priorität(int) Die Prioritätsstufe, bis zu der $function_to_add ausgeführt wird. Wahlweise. Standardeinstellung 10.
$ Accepted_args(int) Die Anzahl der Argumente, die die aufrufbare Funktion $function_to_add akzeptiert. Wahlweise. Standardeinstellung 1
Examples
Direkter Funktionsrückruf
add_action( 'init', function() { // do something here } );
Verwenden eines Funktionsblocks zum Einhaken einer Reihe von Anweisungen. Mit dem init Hook wird der Befehlssatz ausgeführt, sobald Wordpress die erforderlichen Komponenten geladen hat.
Funktionsname-Referenzrückruf
function my_init_function() { // do something here } add_action( 'init', 'my_init_function' );
Verwenden des Namens der Funktion zum Einhaken einer Reihe von Anweisungen Mit dem init
https://riptutorial.com/de/home 9
Hook wird der Befehlssatz ausgeführt, sobald Wordpress die erforderlichen Komponenten geladen hat.
Rückruf einer statischen Methode der Klasse
class MyClass { static function my_init_method() { // do something here } } add_action( 'init', array( 'MyClass', 'my_init_method' ) );
Verwenden einer statischen Methode einer Klasse zum Einhängen von Anweisungen. Mit dem init Hook wird der Befehlssatz ausgeführt, sobald Wordpress die erforderlichen Komponenten geladen hat.
Callback der Objektmethode
class MyClass { function my_init_method() { // do something here } } $obj = new MyClass(); add_action( 'init', array( $obj, 'my_init_method' ) );
Verwenden einer Methode eines Objekts zum Anhängen eines Satzes von Anweisungen. Mit dem init Hook wird der Befehlssatz ausgeführt, sobald Wordpress die erforderlichen Komponenten geladen hat.
add_action () online lesen: https://riptutorial.com/de/wordpress/topic/6264/add-action---
https://riptutorial.com/de/home 10
Kapitel 3: add_editor_style ()
Einführung
Mit dieser Funktion können Benutzer Stylesheets für den TinyMCE-Editor laden
Syntax
add_editor_style ($ Stylesheet)•
Parameter
Parameter Einzelheiten
$ Stylesheet
(Array oder String) (Optional) Stylesheet-Name oder Array davon, relativ zum Designstamm. Standardmäßig "editor-style.css"
Examples
Laden einer einzelnen CSS-Datei
Code
function add_new_style() { add_editor_style( 'file-name-here.css' ); } add_action( 'admin_init', 'add_new_style' );
Erläuterung
Im obigen Code haben wir add_editor_style verwendet, um die CSS-Datei zu laden. Wir haben auch add_action verwendet, um sicherzustellen, dass WordPress unsere Funktion ausführt.
add_editor_style () online lesen: https://riptutorial.com/de/wordpress/topic/9215/add-editor-style---
https://riptutorial.com/de/home 11
Kapitel 4: add_menu_page ()
Einführung
Mit dieser Funktion fügen Sie ein Element in die Navigationsleiste des Verwaltungsbereichs ein.
Syntax
add_menu_page ($ page_title, $ menu_title, $ fähigkeit, $ menu_slug, $ function, $ icon_url, $ position)
•
Parameter
Parameter Einzelheiten
$ page_title(Zeichenfolge) Der Text, der in den Titel-Tags der Seite angezeigt werden soll, wenn das Menü ausgewählt wird.
$ menu_title
(Zeichenfolge) Der für das Menü zu verwendende Text.
$ Fähigkeit(Zeichenfolge) Die Fähigkeit, die benötigt wird, damit dieses Menü dem Benutzer angezeigt wird.
$ menu_slug
(Zeichenfolge) Der Slug-Name, durch den auf dieses Menü verwiesen wird (sollte für dieses Menü eindeutig sein)
$ Funktion(aufrufbar) (optional) Die Funktion, die aufgerufen werden soll, um den Inhalt dieser Seite auszugeben.
$ icon_url(Zeichenfolge) (optional) Die URL zu dem Symbol, das für dieses Menü verwendet werden soll.
$ position(int) (optional) Die Position in der Menüreihenfolge, in der diese angezeigt werden soll.
Bemerkungen
Hier ist eine Liste der Standardpositionen (für $ position)
2 - Dashboard•4 - Trennzeichen•5 - Beiträge•10 - Medien•
https://riptutorial.com/de/home 12
15 - Links•20 - Seiten•25 - Kommentare•59 - Separator•60 - Aussehen•65 - Plugins•70 - Benutzer•75 - Werkzeuge•80 - Einstellungen•99 - Separator•
Examples
Hinzufügen des Elements "Titelseitentitel" zur Navigationsleiste
Code
function add_the_theme_page(){ add_menu_page('Theme page title', 'Theme menu label', 'manage_options', 'theme-options', 'page_content', 'dashicons-book-alt'); } add_action('admin_menu', 'add_the_theme_page'); function page_content(){ echo '<div class="wrap"><h2>Testing</h2></div>'; }
Ausgabe
https://riptutorial.com/de/home 13
Erläuterung
Im Code haben wir eine Funktion namens add_the_theme_page und mit add_menu_page das Element zur Navigationsleiste hinzugefügt. Bitte überprüfen Sie den Parameter-Abschnitt auf dieser Seite, um zu erfahren, welche Argumente wir übergeben haben. Anschließend haben wir add_action , um die Funktion add_the_theme_page . Schließlich haben wir die Funktion page_content , um den Inhalt der Seite anzuzeigen.
OOP & wie man Skripte / Stile auf der Menüseite lädt
<?php /* * Plugin Name: Custom Admin Menu */ class SO_WP_Menu {
https://riptutorial.com/de/home 14
private $plugin_url; public function __construct() { $this->plugin_url = plugins_url( '/', __FILE__ ); add_action( 'plugins_loaded', array( $this, 'init' ) ); } public function init() { add_action( 'admin_menu', array( $this, 'add_menu' ) ); } public function add_menu() { $hook = add_menu_page( 'My Menu', // Title, html meta tag '<span style="color:#e57300;">My Menu</span>', // Menu title, hardcoded style 'edit_pages', // capability 'dummy-page-slug', // URL array( $this, 'content' ), // output null, // icon, uses default 1 // position, showing on top of all others ); add_action( "admin_print_scripts-$hook", array( $this, 'scripts' ) ); add_action( "admin_print_styles-$hook", array( $this, 'styles' ) ); } public function content() { ?> <div id="icon-post" class="icon32"></div> <h2>Dummy Page</h2> <p> Lorem ipsum</p> <?php } # Printing directly, could be wp_enqueue_script public function scripts() { ?><script>alert('My page');</script><?php } # Enqueing from a CSS file on plugin directory public function styles() { wp_enqueue_style( 'my-menu', $this->plugin_url . 'my-menu.css' ); } } new SO_WP_Menu();
In diesem Beispiel ist zu beachten, dass bei der Verwendung von add_menu_page() ein Hook zurückgegeben wird, mit dem unsere genaue Seite als Ziel ausgewählt werden kann und Styles und Scripts dort geladen werden können. Ein häufiger Fehler ist das Enqueue ohne Targeting. Dadurch werden Skripte und Stile über /wp-admin . Mit OOP können wir gemeinsame Variablen speichern, die zwischen internen Methoden verwendet werden.
add_menu_page () online lesen: https://riptutorial.com/de/wordpress/topic/9189/add-menu-page---
https://riptutorial.com/de/home 15
Kapitel 5: add_submenu_page ()
Einführung
Diese Funktion dient zum Hinzufügen eines Unterelements zu einem vorhandenen Element in der Navigationsleiste des Admin-Bereichs.
Syntax
add_submenu_page ($ parent_slug, $ page_title, $ menu_title, $ fähigkeit, $ menu_slug, $ function)
•
Parameter
Parameter Einzelheiten
$ parent_slug
(Zeichenfolge) Der Slug-Name für das übergeordnete Menü (oder der Dateiname einer Standard-WordPress-Admin-Seite).
$ page_title(Zeichenfolge) Der Text, der in den Titel-Tags der Seite angezeigt werden soll, wenn das Menü ausgewählt wird.
$ menu_title (Zeichenfolge) Der für das Menü zu verwendende Text.
$ Fähigkeit(Zeichenfolge) Die Fähigkeit, die benötigt wird, damit dieses Menü dem Benutzer angezeigt wird.
$ menu_slug
(Zeichenfolge) Der Slug-Name, durch den auf dieses Menü verwiesen wird (sollte für dieses Menü eindeutig sein)
$ Funktion(aufrufbar) (Optional) Die Funktion, die aufgerufen werden soll, um den Inhalt dieser Seite auszugeben.
Bemerkungen
Hier finden Sie eine Liste der Slugs für $ parent_slug
Dashboard: 'index.php'•Beiträge: 'edit.php'•Medien: 'upload.php'•Seiten: 'edit.php? Post_type = page'•Kommentare: 'edit-comments.php'•Benutzerdefinierte Beitragstypen: "edit.php? Post_type = Ihr_post_type"•Aussehen: 'themes.php'•
https://riptutorial.com/de/home 16
Plugins: 'plugins.php'•Benutzer: 'users.php'•Werkzeuge: 'tools.php'•Einstellungen: 'options-general.php'•Netzwerkeinstellungen: 'settings.php'•
Examples
Hinzufügen der "Untermenüseite" als Unterseite von "Tools" zur Navigationsleiste
Code
add_action('admin_menu', 'register_my_custom_submenu_page'); function register_my_custom_submenu_page() { add_submenu_page( 'tools.php', 'Submenu Page', 'My Custom Submenu Page', 'manage_options', 'my-custom-submenu-page', 'my_custom_submenu_page_content' ); } function my_custom_submenu_page_content() { echo '<div class="wrap">'; echo '<h2>Page Title</h2>'; echo '</div>'; }
Ausgabe
https://riptutorial.com/de/home 17
Erläuterung
Im Code haben wir eine Funktion namens register_my_custom_submenu_page und wir haben add_submenu_page , um das Element als untergeordnetes Element von tools.php, der Seite Tools, zur add_submenu_page hinzuzufügen.
Bitte überprüfen Sie den Parameter-Abschnitt auf dieser Seite, um zu erfahren, welche Argumente wir übergeben haben. Anschließend haben wir add_action , um register_my_custom_submenu_page Funktion add_action auszuführen. Schließlich haben wir die Funktion my_custom_submenu_page_content , um den Inhalt der Seite anzuzeigen.
add_submenu_page () online lesen: https://riptutorial.com/de/wordpress/topic/9193/add-submenu-page---
https://riptutorial.com/de/home 18
Kapitel 6: add_theme_support ()
Einführung
Diese Funktion registriert Features, die das Design unterstützt.
Syntax
add_theme_support ($ feature)•
Parameter
Parameter Einzelheiten
$ -Funktion (string) Das hinzugefügte Feature.
Bemerkungen
Liste der Funktionen, die in $ verwendet werden sollen:
Postformate•"Post-Thumbnails"•'html5'•'custom-logo'•'Custom-Header-Uploads'•'benutzerdefinierte Kopfzeile'•'Benutzerdefinierter Hintergrund'•'title-tag'•'Starter-Inhalt'•
Examples
Theme-Unterstützung für Postformate hinzufügen
add_theme_support( 'post-formats', array( 'formatone', 'formattwo' ) );
Theme-Unterstützung für Post-Thumbnails zu Posts hinzufügen
add_theme_support( 'post-thumbnails', array( 'post' ) );
Der obige Code erlaubt nur Post-Dailsails für alle Posts. So aktivieren Sie die Funktion für alle Beitragstypen:
https://riptutorial.com/de/home 19
add_theme_support( 'post-thumbnails' );
add_theme_support () online lesen: https://riptutorial.com/de/wordpress/topic/9216/add-theme-support---
https://riptutorial.com/de/home 20
Kapitel 7: Admin-Dashboard-Widgets
Einführung
Mit einem Admin-Dashboard-Widget können Sie beliebige Informationen im Admin-Dashboard anzeigen. Sie können mehrere Widgets erstellen, wenn Sie möchten. Sie können den Code der functions.php Ihres Themes oder Ihres Plugins hinzufügen.
Syntax
add_action ($ tag, $ function_to_add, $ Priorität, $ akzeptierte_args);•wp_add_dashboard_widget ($ widget_id, $ widget_name, $ callback, $ control_callback, $ callback_args)
•
Parameter
Parameter Einzelheiten
$ tag( Zeichenfolge erforderlich ) Name der Aktion, an der $ function_to_add angehängt ist
$ function_to_add
( aufrufbar erforderlich ) Name der Funktion, die Sie aufrufen möchten.
$ Priorität( int optional ) Ort des Funktionsaufrufs in allen Aktionsfunktionen (Standard = 10)
$ Accepted_args( int optional ) Anzahl der Parameter, die die Funktion akzeptiert (Standard = 1)
$ widget_id ( Zeichenfolge erforderlich ) Einzigartiger Slug für Ihr Widget
$ widget_name ( Zeichenfolge erforderlich ) Name Ihres Widgets (im Kopf angezeigt)
$ Rückruf( aufrufbar erforderlich ) Name der Funktion, die den Inhalt Ihres Widgets anzeigt
$ control_callback
( aufrufbar optional ) Name der Funktion, die die Formulare der Widgetoptionen verarbeitet
$ callback_args ( Array optional ) Parameter der $ control_callback-Funktion
Examples
https://riptutorial.com/de/home 21
Einfaches Widget (Text anzeigen)
Dadurch wird ein einfaches Widget hinzugefügt, das nur eine kleine Nachricht anzeigt.
add_action('wp_dashboard_setup', 'register_my_dashboard_widgets'); function register_my_dashboard_widgets() { wp_add_dashboard_widget('myInfo_widget', 'Important Information', 'display_infoWidget'); } function display_infoWidget() { echo '<p>At the first of february this site gets a new design. Therefore is wont be available this day. To see the current progress you can visit <a href="http://www.justanexample.com" >this site</a></p>'; }
Admin-Dashboard-Widgets online lesen: https://riptutorial.com/de/wordpress/topic/9571/admin-dashboard-widgets
https://riptutorial.com/de/home 22
Kapitel 8: AJAX
Examples
AJAX-Anfrage mit einer JSON-Antwort
Functions.php:
// We add the action twice, once for logged in users and once for non logged in users. add_action( 'wp_ajax_my_action', 'my_action_callback' ); add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' ); // Enqueue the script on the front end. add_action( 'wp_enqueue_scripts', 'enqueue_my_action_script' ); // Enqueue the script on the back end (wp-admin) add_action( 'admin_enqueue_scripts', 'enqueue_my_action_script' ); function my_action_callback() { $json = array(); if ( isset( $_REQUEST['field2'] ) ) { $json['message'] = 'Success!'; wp_send_json_success( $json ); } else { $json['message'] = 'Field 2 was not set!'; wp_send_json_error( $json ); } } function enqueue_my_action_script() { wp_enqueue_script( 'my-action-script', 'path/to/my-action-script.js', array( 'jquery' ), null, true ); wp_localize_script( 'my-action-script', 'my_action_data', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), ) ); }
my-action-script.js:
(function( $ ) { 'use strict'; $( document ).on( 'ready', function() { var data = { action: 'my_action', field2: 'Hello World', field3: 3 }; $.getJSON( my_action_data.ajaxurl, data, function( json ) { if ( json.success ) { alert( 'yes!' ); } else { alert( json.data.message ); }
https://riptutorial.com/de/home 23
} ); } ); })( jQuery );
AJAX mit .ajax () und WordPress Nonce
Functions.php
//Localize the AJAX URL and Nonce add_action('wp_enqueue_scripts', 'example_localize_ajax'); function example_localize_ajax(){ wp_localize_script('jquery', 'ajax', array( 'url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('example_ajax_nonce'), )); } //Example AJAX Function add_action('wp_ajax_example_function', 'example_function'); add_action('wp_ajax_nopriv_example_function', 'example_function'); function example_function(){ if ( !wp_verify_nonce($_POST['nonce'], 'example_ajax_nonce') ){ die('Permission Denied.'); } $firstname = sanitize_text_field($_POST['data']['firstname']); $lastname = sanitize_text_field($_POST['data']['lastname']); //Do something with data here echo $firstname . ' ' . $lastname; //Echo for response wp_die(); // this is required to terminate immediately and return a proper response:- https://codex.wordpress.org/AJAX_in_Plugins }
beispiel.js
jQuery(document).on('click touch tap', '.example-selector', function(){ jQuery.ajax({ type: "POST", url: ajax.url, data: { nonce: ajax.nonce, action: 'example_function', data: { firstname: 'John', lastname: 'Doe' }, }, success: function(response){ //Success }, error: function(XMLHttpRequest, textStatus, errorThrown){ //Error }, timeout: 60000 });
https://riptutorial.com/de/home 24
return false; });
wp_ajax - Kernfunktionalität + _wpnonce check
Functions.php :
function rm_init_js() { wp_enqueue_script( 'custom-ajax-script', get_template_directory_uri() . '/js/ajax.js', array( 'jquery', 'wp-util' ), '1.0', true ); // pass custom variables to JS wp_localize_script( 'custom-ajax-script', 'BEJS', array( 'action' => 'custom_action', 'nonce' => wp_create_nonce( 'test-nonce' ) ) ); } add_action( 'wp_enqueue_scripts', 'rm_init_js' ); function rm_ajax_handler() { check_ajax_referer( 'test-nonce' ); extract( $_POST ); $data = compact( 'first_name', 'last_name', 'email' ); foreach ( $data as $name => $value ) { switch ( $name ) { case 'first_name': case 'last_name': $data[ $name ] = ucfirst( sanitize_user( $value ) ); break; case 'email': $data[ $name ] = sanitize_email( $value ); break; } } $userID = email_exists( $data['email'] ); if ( ! $userID ) { wp_send_json_error( sprintf( __( 'Something went wrong! %s try again!', 'textdomain' ), $data['first_name'] . ' ' . $data['last_name'] ) ); } wp_update_user( array( 'ID' => $userID, 'display_name' => $data['first_name'] . ' ' . $data['last_name'], 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], ) ); wp_send_json_success( sprintf( __( 'Welcome Back %s', 'textdomain' ), $data['first_name'] . ' ' . $data['last_name'] ) ); } add_action( 'wp_ajax_custom_action', 'rm_ajax_handler' ); add_action( 'wp_ajax_nopriv_custom_action', 'rm_ajax_handler' );
https://riptutorial.com/de/home 25
ajax.js
;(function() { wp.ajax.post(BEJS.action, { first_name: 'john', last_name: '%65doe', email: '[email protected]', _ajax_nonce: BEJS.nonce }).done( function( response ) { alert(`Success: ${response}`); }).fail( function( response ) { alert(`Error: ${response}`); }); })();
OOP-Ajax-Einreichung unter Verwendung einer einfachen Klasse mit Nonce
Sie können das gesamte Plugin kopieren und einfügen, um es auszuprobieren. Die Klasse Skelett wird aus gebrauchtem hier .
class-oop-ajax.cpp
<?php /** * The plugin bootstrap file * * This file is read by WordPress to generate the plugin information in the plugin * Dashboard. This file defines a function that starts the plugin. * * @wordpress-plugin * Plugin Name: Oop Ajax * Plugin URI: http:// * Description: A simple example of using OOP principles to submit a form from the front end. * Version: 1.0.0 * Author: Digvijay Naruka * Author URI: http:// * License: GPL-2.0+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Text Domain: oop-ajax * Domain Path: /languages */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } class Oop_Ajax { // Put all your add_action, add_shortcode, add_filter functions in __construct() // For the callback name, use this: array($this,'<function name>')
https://riptutorial.com/de/home 26
// <function name> is the name of the function within this class, so need not be globally unique // Some sample commonly used functions are included below public function __construct() { // Add Javascript and CSS for front-end display add_action('wp_enqueue_scripts', array($this,'enqueue')); // Add the shortcode for front-end form display add_action( 'init', array( $this, 'add_form_shortcode' ) ); // Add ajax function that will receive the call back for logged in users add_action( 'wp_ajax_my_action', array( $this, 'my_action_callback') ); // Add ajax function that will receive the call back for guest or not logged in users add_action( 'wp_ajax_nopriv_my_action', array( $this, 'my_action_callback') ); } // This is an example of enqueuing a JavaScript file and a CSS file for use on the front end display public function enqueue() { // Actual enqueues, note the files are in the js and css folders // For scripts, make sure you are including the relevant dependencies (jquery in this case) wp_enqueue_script('my-ajax-script', plugins_url('js/oop-ajax.js', __FILE__), array('jquery'), '1.0', true); // Sometimes you want to have access to data on the front end in your Javascript file // Getting that requires this call. Always go ahead and include ajaxurl. Any other variables, // add to the array. // Then in the Javascript file, you can refer to it like this: my_php_variables.ajaxurl wp_localize_script( 'my-ajax-script', 'my_php_variables', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('_wpnonce') )); } /** * Registers the shortcode for the form. */ public function add_form_shortcode() { add_shortcode( "oop-ajax-add-form", array( $this, "add_form_front_end" ) ); } /** * Processes shortcode oop-ajax-add-form * * @param array $atts The attributes from the shortcode * * @return mixed $output Output of the buffer */ function add_form_front_end($atts, $content) { echo "<form id='my_form'>"; echo "<label for='name'>Name: </label>"; echo "<input id='name' type='text' name='name' ";
https://riptutorial.com/de/home 27
echo "<br>" ; echo "<label id='email' for='email'>Email: </label>" ; echo "<input type='text' name='email'>"; echo "<br>" ; echo "<input type='hidden' name='action' value='my_action' >" ; echo "<input id='submit_btn' type='submit' name='submit' value='submit'> "; echo "</form><br><br>"; echo "<div id='response'>ajax responce will be here</div> "; } /** * Callback function for the my_action used in the form. * * Processses the data recieved from the form, and you can do whatever you want with it. * * @return echo response string about the completion of the ajax call. */ function my_action_callback() { // echo wp_die('<pre>' . print_r($_REQUEST) . "<pre>"); check_ajax_referer( '_wpnonce', 'security'); if( ! empty( $_POST )){ if ( isset( $_POST['name'] ) ) { $name = sanitize_text_field( $_POST['name'] ) ; } if( isset( $_POST['email'] ) ) { $email = sanitize_text_field( $_POST['email'] ) ; } /////////////////////////////////////////// // do stuff with values // example : validate and save in database // process and output /////////////////////////////////////////// $response = "Wow <strong style= 'color:red'>". $name . "!</style></strong> you rock, you just made ajax work with oop."; //this will send data back to the js function: echo $response; } else { echo "Uh oh! It seems I didn't eat today"; } wp_die(); // required to terminate the call so, otherwise wordpress initiates the termination and outputs weird '0' at the end. } }
https://riptutorial.com/de/home 28
//initialize our plugin global $plugin; // Create an instance of our class to kick off the whole thing $plugin = new Oop_Ajax();
oop-ajax.js
Legen Sie die js-Datei im js-Verzeichnis ab, z. B. oop-ajax / js / oop-ajax.js
(function($) { 'use strict'; $("#submit_btn").on('click', function() { // set the data var data = { action: 'my_action', security: my_php_variables.nonce, name: $("#name").val(), email: $("#email").val() } $.ajax({ type: 'post', url: my_php_variables.ajaxurl, data: data, success: function(response) { //output the response on success $("#response").html(response); }, error: function(err) { console.log(err); } }); return false; }); })(jQuery);
AJAX online lesen: https://riptutorial.com/de/wordpress/topic/2335/ajax
https://riptutorial.com/de/home 29
Kapitel 9: Aktionen und Filter
Syntax
add_action (tag, function_to_call, priorität, num_of_args);•add_filter (Tag, function_to_call, priorität, num_of_args);•
Parameter
Parameter Erläuterung
$ tag(Zeichenfolge) (Erforderlich) Der Name der Aktion, an die die $ -Funktion angehängt ist.
$ Funktion(aufrufbar) (Erforderlich) Erfordert eine Zeichenfolge, die den Funktionsnamen oder die anonyme Funktion enthält. Siehe Beispiele zum Hinzufügen von Funktionen innerhalb von Klassen.
$ Priorität
(int) default = 10. Funktionen, die an Hooks / Filter angehängt sind, werden in der zugewiesenen Priorität ausgeführt. Es kann vorkommen, dass Sie vor allen anderen Aktionen mit Code arbeiten möchten, Priority = 1 oder nach allen anderen angefügten Funktionen Priority = 100 usw. festlegen. Wie bei allen PHP-Funktionen können Sie die Funktion verwenden, ohne einen Wert für eine Variable zu übergeben wo ein Standardwert festgelegt wurde, aber wenn Sie die Anzahl der zurückgegebenen Parameter ändern möchten, müssen Sie angeben!
$ parameter
(int) default = 1. Die Anzahl der an Ihre angehängte Funktion zurückgegebenen Parameter. Die zurückgegebenen Parameter hängen von der Nummer ab, an der der Hook erstellt wurde. Weitere apply_filters() Sie unter apply_filters() und do_action() .
Bemerkungen
Wordpress-Haken
Etwas, das Entwickler oftmals verwirrt, wenn sie mit WordPress arbeiten, ist die Verwendung von apply_filters() und add_action() . Sie werden oft Plugins / Themes sehen, die diese im Code verwenden. Wenn Sie das Konzept nicht verstehen, werden Sie Schwierigkeiten haben, mit ihnen zu arbeiten.
In Kürze (sehr kurz, lesen Sie das WordPress-Lade-Flussdiagramm für den Prozess im Detail), lädt WordPress auf folgende Weise:
https://riptutorial.com/de/home 30
wp-load.php - Funktionen etc1. mu-plugins - alle Dateien, die sich im Ordner mu-plugins befinden - werden häufig für zwischengespeicherte Objekte verwendet
2.
Plugins - keine besondere Reihenfolge, alle installierten und aktivierten Plugins werden geladen
3.
Aktives untergeordnetes Thema / übergeordnetes Thema4. init - Rest der Daten5. Vorlage6.
Wenn Sie ein Entwickler sind und mit einer Funktionsdatei arbeiten, können Sie sehen, dass beide zuvor geladen wurden als die Dateien, mit denen Sie arbeiten. Das heißt, Sie können keine Prozesse ändern (beachten Sie können keine Funktionen überschreiben) oder Variablen, die später ausgeführt werden oder noch nicht definiert wurden. Außerdem können Themenentwickler Hooks in ihren Code einfügen, damit Plugins eine Verbindung herstellen können, oder Plugins können zulassen, dass andere Plugins ihre Variablen überschreiben. Nun mag das bis jetzt verwirrend sein, aber dort bleiben.
Um add_filter() und add_action() zu verstehen, add_filter() wir uns zuerst ansehen, wie die Hooks erstellt werden.
$arga= 'hello'; do_action('im_a_hook', $arga );
Wenn Sie in WordPress auf das Obige stoßen, werden alle an den Hook im_a_hook angehängten Funktionen im_a_hook (suchen Sie nach $wp_filter um Informationen zum Prozess zu erhalten). In Ihrer angefügten Funktion steht $arga für die angefügte Funktion zur Verfügung.
add_action('im_a_hook', 'attached_function'); function attached_function($arga){ echo $arga; }
Dies eröffnet neue Möglichkeiten, um Variablen an bestimmten Punkten des Ladeprozesses zu ändern. Denken Sie daran, dass wir vorhin gesagt haben, dass Vorlagen nach Plugins / Themes geladen werden? Ein häufiges Plugin ist WooCommerce, das später im Prozess Bildschirme erstellt. Ich werde nicht dokumentieren, wie ein Beispiel für do_action im Plugin zu finden ist.
do_action( 'woocommerce_after_add_to_cart_button' );
Hier haben wir einen Hook erstellt, der keine Variablen zurückgibt, aber wir können trotzdem Spaß daran haben:
add_action( 'woocommerce_after_add_to_cart_button', 'special_offer'); function special_offer(){ echo '<h1>Special Offer!</h1>; }
https://riptutorial.com/de/home 31
Die obige add_action wird echo eine Überschrift Spezpredloschenija wo do_action('woocommerce_after_add_to_cart_button') befindet , welche, wenn ein WooCommerce Bildschirm zu schaffen. Daher können wir diesen Hook zum Einfügen von HTML verwenden. Andere Anwendungen umfassen das Umleiten auf einen anderen Bildschirm insgesamt usw.
Es können auch mehrere Variablen an die Funktion übergeben werden. Versuchen Sie dies in Ihren Themenfunktionen. Beachten Sie den letzten Parameter, den wir auf 3 setzen, da wir mit den 3 verfügbaren Parametern arbeiten möchten. Wenn wir dies auf 2 ändern, wird nur 2 zurückgegeben und wir erhalten einen undefinierten Fehler.
add_action('custom_hook', 'attached_function', 10, 3); function attached_function($a,$b,$c){ var_dump($a); var_dump($b); var_dump($c); } $arga = 1; $argb = 2; $argc = 3; do_action('custom_hook', $arga, $argb, $argc); exit;
Es gibt einen weiteren WP-Hook-Typ, der als Filter bezeichnet wird. Ein Filter unterscheidet sich von einer Aktion in ihrer Verwendung. Eine Aktion kann nur Variablen empfangen. Offensichtlich befinden sich diese Variablen im Funktionsumfang (Sie sollten wissen, was PHP ist, wenn nicht Google). Die Filter geben die zurückgegebenen Daten zurück, sodass Sie Variablen ändern können.
$filter_me= apply_filters('im_a_filter', $variable_to_filter);
Wo Sie das oben sehen, können Sie den Wert von $filter_me da alle von Ihnen zurückgegebenen Daten der in der Variablen gespeicherte Wert sind. So zum Beispiel (Beachten Sie, dass wir $variable_to_filter im Beispiel in $filter_me ):
add_filter('im_a_filter', 'attached_function', 100); function attached_function($filter_me){ $filter_me= 'ray'; return $filter_me; } $filter_me = 'bob'; $filter_me= apply_filters('im_a_filter', $filter_me);
https://riptutorial.com/de/home 32
Die $filter_me Variable enthält jetzt 'ray' anstelle von 'bob' . Wir haben eine Priorität von 100 festgelegt. Wir sind also zuversichtlich, dass niemand den Wert nach der Verwendung ändert (es können mehrere Filter auf demselben Hook laufen) Kann jetzt später im Prozess verwendete Variablen ändern, wenn apply_filters() vorhanden ist.
Sie können auch mehrere Parameter übergeben, Sie können jedoch nur den Wert von eins ändern. Sie müssen auch einen Wert zurückgeben, sonst enthält Ihre Variable nichts. Wenn Sie wissen, wie Sie mit php Variablen / Werte / Arrays / Objekte zuweisen, ist dies für Sie offensichtlich, zB:
add_filter('im_a_filter', 'attached_function', 100, 3); function attached_function($filter_me, $arga, $argb){ $filter_me= 'ray'.$arga.$argb; $arga= 'you fool'; return $filter_me; } $filter_me = 'bob'; $arga = ' middlename'; $argb = ' surname'; $filter_me= apply_filters('im_a_filter', $filter_me, $arga, $argb);
Die Variable $filter_me enthält jetzt den Nachnamen 'ray middlename' . Aber was ist mit $arga ? Dieser enthält immer noch 'middlename' . Die Änderung eines $arga in 'you Fool' innerhalb unserer Funktion hat keinen Einfluss auf den definierten Wert außerhalb seines Gültigkeitsbereichs (es gibt Möglichkeiten, Google-Globals usw.).
add_action ($ hook_name, $ function, $ priority, $ parameters)
add_filter ($ hook_name, $ function, $ priority, $ parameters);
Examples
add_action - init
add_action('init', 'process_post'); function process_post(){ if($_POST) var_dump($_POST); }
add_action - init - anonyme Funktion
https://riptutorial.com/de/home 33
add_action('init' , function(){ echo 'i did something'; });
add_action - init - innerhalb eines Klassenobjekts
class sample{ public function __construct(){ add_action('init', array($this, 'samp') ); } public function samp(){ // must be public!! echo 'i did something'; } } new sample();
add_action - init - innerhalb der statischen Klasse
class sample{ public static function add_action_func(){ //note __CLASS__ will also include any namespacing add_action('init', array(__CLASS__, 'samp') ); } public static function samp(){ echo 'i did something'; } } sample::add_action_func();
Aktionen und Filter online lesen: https://riptutorial.com/de/wordpress/topic/2692/aktionen-und-filter
https://riptutorial.com/de/home 34
Kapitel 10: Aktualisieren Sie WordPress manuell
Examples
Über FTP
Laden Sie die gewünschte Version von WordPress von www.wordpress.org auf Ihren lokalen Computer herunter und entpacken Sie die Datei.
Behalten Sie auch ein Backup Ihrer aktuellen Version ... nur für den Fall.•
1.
Stellen Sie mit Ihrem bevorzugten FTP-Client eine Verbindung zu Ihrer Website her (FileZilla ist beliebt und einfach, aber jeder FTP-Client ist in Ordnung).
Anweisungen hierfür liegen außerhalb des Umfangs von WordPress, können jedoch zu einem späteren Zeitpunkt im vorgeschlagenen FTP-Thema gefunden werden .
•
2.
Laden Sie die Ordner (und deren Inhalt) mit dem Titel "wp-admin" und "wp-include" in die entsprechenden Verzeichnisse auf Ihrem Server hoch. Achten Sie darauf, die aktuellen Ordner zu überschreiben.
Sie können das Hochladen des Ordners "wp-content" auslassen, es sei denn, Sie möchten eines der enthaltenen Themen verwenden. Wenn Sie die Standarddesigns Ihrer gewählten Version aktualisieren / hochladen möchten, sollten Sie auch diesen Ordner hochladen.
•
3.
Laden Sie die einzelnen Dateien in den Home-Ordner hoch (index.php, wp - *. Php usw.).
Sie können die Dateien mit dem Titel "liscense.txt" und "readme.html" weglassen, da sie nicht funktionieren müssen und sie als Methoden zur Ermittlung Ihrer WP-Version für Sicherheits-Exploits verwendet werden können.
•
4.
Besuchen Sie Ihre Website und melden Sie sich an, um erforderliche Datenbankaktualisierungen durchzuführen.
Nicht alle WP-Aktualisierungen haben Datenbankänderungen, aber einige tun es.•
5.
Hinweis : Bei dieser Methode werden verwaiste Dateien erstellt, die sich im Laufe der Zeit aufbauen können und Sicherheitsrisiken darstellen können. Stellen Sie sicher, dass Sie nach dem Abschluss einen Dateivergleich durchführen und alte Dateien von früheren WP-Versionen löschen, die nicht mehr verwendet werden.
Aktualisieren Sie WordPress manuell online lesen: https://riptutorial.com/de/wordpress/topic/8663/aktualisieren-sie-wordpress-manuell
https://riptutorial.com/de/home 35
Kapitel 11: Alternierende Hauptschleife (Filter pre_get_posts)
Syntax
add_action ('pre_get_posts', 'callback_function_name');•Funktion callback_function_name ($ query) {}•// für PHP 5.3.0 oder höher•add_action ('pre_get_posts', Funktion ($ query) {});•
Parameter
Parameter Einzelheiten
$ Abfrage (WP_Query) Schleifenobjekt
Bemerkungen
Wenn Sie PHP 5.3.0 oder höher verwenden, können Sie Closures ( anonyme Funktionen ) verwenden.
add_action( 'pre_get_posts', function( $query ) { if( !$query->is_main_query() || is_admin() ) return; // this code will run only if // - this query is main query // - and this is not admin screen });
Examples
Noch spezifischeres Loop-Targeting
Angenommen, wir möchten die Hauptschleife nur für eine bestimmte Taxonomie oder einen Post-Typ ändern.
Targeting nur Hauptschleife auf book Post Art Archivseite.
add_action( 'pre_get_posts', 'my_callback_function' ); function my_callback_function( $query ) { if( !$query->is_main_query() || is_admin() ) return; if( !is_post_type_archive( 'book' ) ) return; // this code will run only if
https://riptutorial.com/de/home 36
// - this query is main query // - and this is not admin screen // - and we are on 'book' post type archive page }
Sie können mit is_category() , is_tag() und is_tax() auch nach Kategorien, Tags oder benutzerdefinierten Taxonomie-Archivseiten is_tax() .
Sie können jedes in WordPress verfügbare bedingte Tag verwenden .
Zeige Beiträge aus nur einer Kategorie
add_action( 'pre_get_posts', 'single_category' ); function single_category( $query ) { if( !$query->is_main_query() || is_admin() ) return; $query->set( 'cat', '1' ); return; }
Beiträge vor dem Abrufen von Posts filtern die grundlegende Verwendung
Manchmal möchten Sie die Haupt-WordPress-Abfrage ändern.
Filter pre_get_posts ist der Weg zu gehen.
Zum Beispiel pre_get_posts Sie mit pre_get_posts Hauptschleife mitteilen, dass sie nur 5 Beiträge pre_get_posts . Oder um Beiträge nur aus einer Kategorie anzuzeigen oder jegliche Kategorie auszuschließen usw.
add_action( 'pre_get_posts', 'my_callback_function' ); function my_callback_function( $query ) { // here goes logic of your filter }
Wie Sie sehen, übergeben wir das Hauptschleifen- Abfrageobjekt in unser Callback-Funktionsargument.
Wichtiger Hinweis hier: Wir übergeben Argumente als Referenz . Das bedeutet, dass wir keine Abfrage zurückgeben oder Globals setzen müssen, damit es funktioniert. Da $query eine Referenz auf das Hauptabfrageobjekt ist, werden alle Änderungen, die wir an unserem Objekt vornehmen, sofort im Hauptschleifenobjekt angezeigt.
Kategorie aus der Beitragsliste entfernen freigeben
add_action( 'pre_get_posts', 'single_category_exclude' ); function single_category_exclude( $query ) { if( !$query->is_main_query() || is_admin() ) return;
https://riptutorial.com/de/home 37
$query->set( 'cat', '-1' ); return; }
Ändern Sie posts_per_page für die Hauptschleife
Alles was wir tun müssen, ist die set() Methode des $query Objekts zu verwenden.
Es braucht zwei Argumente, erstens was wir setzen wollen und zweitens welchen Wert Sie setzen wollen.
add_action( 'pre_get_posts', 'change_posts_per_page' ); function change_posts_per_page( $query ) { if( !$query->is_main_query() || is_admin() ) return; $query->set( 'posts_per_page', 5 ); return; }
Targeting nur für die Haupt-WordPress-Schleife
WordPress wendet den pre_get_posts Filter buchstäblich auf jede erzeugte Schleife an. Das bedeutet, dass alle Änderungen, die wir an unserer Callback-Funktion vornehmen, auf alle vorhandenen Loops angewendet werden.
Natürlich wollen wir es in den meisten Szenarien nicht.
In den meisten Fällen möchten wir nur die Hauptschleife anvisieren und nur für Nicht-Administrationsbildschirme.
Wir können die is_main_query() -Methode und die globale Funktion is_admin() verwenden, um zu überprüfen, ob wir am richtigen Ort sind.
add_action( 'pre_get_posts', 'my_callback_function' ); function my_callback_function( $query ) { if( !$query->is_main_query() || is_admin() ) return; // this code will run only if // - this query is main query // - and this is not admin screen }
Alternierende Hauptschleife (Filter pre_get_posts) online lesen: https://riptutorial.com/de/wordpress/topic/4418/alternierende-hauptschleife--filter-pre-get-posts-
https://riptutorial.com/de/home 38
Kapitel 12: Beiträge abfragen
Syntax
$ the_query = new WP_Query ($ args);•$ posts_array = get_posts ($ args);•
Parameter
Parameter Beschreibung
$ args
(Array) Ein Array benötigter Argumente für eine Abfrage - kann an Ihre Bedürfnisse angepasst werden, z. B. das Abfragen von Beiträgen aus nur einer Kategorie, vom benutzerdefinierten Beitragstyp oder sogar das Abfragen bestimmter Taxonomien
Bemerkungen
Abfrageargumente sind zahlreich. Die WP_Query () -Codex- Seite enthält eine Liste von Parametern. Einige von ihnen sind
Autorenparameter•Kategorie-Parameter•Tag-Parameter•Taxonomie-Parameter•Suchparameter•Post- und Seitenparameter•Passwort-Parameter•Geben Sie die Parameter ein•Statusparameter•Paginierungsparameter•Order & Orderby-Parameter•Datumsparameter•Benutzerdefinierte Feldparameter•Berechtigungsparameter•Parameter für den Mime-Typ•Caching-Parameter•Parameter zurückgeben•
Eines der wichtigsten Dinge, die zu bedenken sind, ist:
Verwenden Sie niemals query_posts ()
query_posts()
https://riptutorial.com/de/home 39
überschreibt die Hauptabfrage und kann Probleme für den Rest Ihres query_posts() verursachen. Jedes Mal, wenn Sie die Hauptabfrage (oder eine beliebige Abfrage für diese Angelegenheit) ändern müssen, müssen Sie den Filter pre_get_posts verwenden . Dadurch können Sie die Abfrage vor der Ausführung ändern.
Auch wenn Sie Beiträge abfragen, sollten Sie sie immer mit wp_reset_postdata () zurücksetzen. Dadurch wird die globale Variable $post der Hauptabfrageschleife wiederhergestellt, und später treten keine Probleme mehr auf (z. B. ausgeschlossene Kategorien, da Sie diese in Ihrer Sekundärschleife ausgeschlossen haben und vergessen haben, die Abfrage zurückzusetzen).
Examples
WP_Query () Objekt verwenden
Das Erstellen einer separaten Instanz des WP_Query Objekts ist einfach:
$query_args = array( 'post_type' => 'post', 'post_per_page' => 10 ); $my_query = new WP_Query($query_args); if( $my_query->have_posts() ): while( $my_query->have_posts() ): $my_query->the_post(); //My custom query loop endwhile; endif; wp_reset_postdata();
Beachten Sie, dass Sie das Abfrageargument-Array gemäß Ihrer Spezifikation erstellen müssen. Weitere Informationen finden Sie auf der WP_Query-Codex-Seite .
Get_posts () verwenden
get_posts() ist ein Wrapper für eine separate Instanz eines WP_Query Objekts. Der zurückgegebene Wert ist ein Array von Post-Objekten.
global $post; $args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) : setup_postdata($post); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php endforeach;
https://riptutorial.com/de/home 40
wp_reset_postdata(); ?>
Weitere Informationen finden Sie auf der Codex-Seite "get_posts ()" .
Beiträge abfragen online lesen: https://riptutorial.com/de/wordpress/topic/4002/beitrage-abfragen
https://riptutorial.com/de/home 41
Kapitel 13: Benutzerdefinierte Auszüge mit excerpt_length und excerpt_more
Examples
Begrenzen Sie die Länge des Auszugs auf 50 Wörter
Fügen Sie den folgenden Code in functions.php ein :
function themify_custom_excerpt_length( $length ) { return 50; } add_filter( 'excerpt_length', 'themify_custom_excerpt_length', 999 );
Verwenden Sie 999 als Priorität, um sicherzustellen, dass die Funktion nach dem Standard-WordPress-Filter ausgeführt wird. Andernfalls würde das, was hier eingestellt ist, überschrieben.
Hinzufügen eines Links "Lesen Sie mehr" am Ende des Auszuges
Fügen Sie dazu den folgenden Code in functions.php ein :
function custom_excerpt_more($more) { return '<a href="'. get_permalink($post->ID) . '">Read More</a>'; } add_filter('excerpt_more', 'custom_excerpt_more');
Die Ergebnisse sollten so aussehen:
https://riptutorial.com/de/home 42
Ein paar Punkte am Ende des Ausschnitts hinzufügen
In unseren Funktionen.php
function new_excerpt_more( $more ) { return '.....'; } add_filter('excerpt_more', 'new_excerpt_more');
Wir sollten das bekommen:
https://riptutorial.com/de/home 43
Benutzerdefinierte Auszüge mit excerpt_length und excerpt_more online lesen: https://riptutorial.com/de/wordpress/topic/6104/benutzerdefinierte-auszuge-mit-excerpt-length-und-excerpt-more
https://riptutorial.com/de/home 44
Kapitel 14: Benutzerdefinierte Beitragstypen
Syntax
register_post_type ($ post_type, $ args);•
Parameter
Parameter Einzelheiten
$ post_type (string) (Erforderlich)
$ args (Array / Zeichenfolge) (optional)
Examples
Registrieren eines benutzerdefinierten Beitragstyps
Angenommen, Sie haben eine Bibliotheks-Website und möchten einen benutzerdefinierten Beitragstyp namens " Bücher" haben . Es kann als registriert werden
function create_bookposttype() { $args = array( 'public' => true, 'labels' => array( 'name' => __( 'Books' ), 'singular_name' => __( 'Book' ) ), ); register_post_type( 'custompost_books', $args ); } add_action( 'init', 'create_bookposttype' );
So einfach ist das, Sie haben jetzt einen benutzerdefinierten Beitragstyp registriert.
https://riptutorial.com/de/home 45
Dieses Snippet kann in Ihrer Theme- functions.php Datei oder in einer Plugin-Struktur platziert werden.
Hinzufügen von benutzerdefinierten Beitragstypen zur Hauptabfrage
Das Registrieren eines benutzerdefinierten Beitragstyps bedeutet nicht, dass er automatisch zur Hauptabfrage hinzugefügt wird. Sie müssen den Filter pre_get_posts verwenden, um der pre_get_posts benutzerdefinierte pre_get_posts hinzuzufügen.
// Show posts of 'post' and 'book' custom post types on home page add_action( 'pre_get_posts', 'add_my_post_types_to_query' ); function add_my_post_types_to_query( $query ) { if ( is_home() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'book' ) );
https://riptutorial.com/de/home 46
return $query; }
Hinzufügen von benutzerdefinierten Beitragstypen zum Haupt-RSS-Feed
Wenn Sie einen benutzerdefinierten Beitragstyp registrieren, bedeutet dies nicht, dass er automatisch zum Haupt-RSS-Feed hinzugefügt wird. Sie müssen den request , um benutzerdefinierte Beitragstypen zum Haupt-RSS-Feed hinzuzufügen.
// Add 'books' custom post types on main RSS feed function add_book_post_types_to_rss($qv) { if (isset($qv['feed']) && !isset($qv['post_type'])) $qv['post_type'] = array('post', 'books', ); return $qv; } add_filter('request', 'add_book_post_types_to_rss');
Registrieren Sie den benutzerdefinierten Beitragstyp
if ( ! function_exists('products_post_type') ) { function products_post_type() { $labels = array( 'name' => _x( 'Products', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Product', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Products', 'text_domain' ), 'name_admin_bar' => __( 'Product', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'attributes' => __( 'Item Attributes', 'text_domain' ), 'parent_item_colon' => __( 'Parent Product:', 'text_domain' ), 'all_items' => __( 'All Products', 'text_domain' ), 'add_new_item' => __( 'Add New Product', 'text_domain' ), 'add_new' => __( 'New Product', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Product', 'text_domain' ), 'update_item' => __( 'Update Product', 'text_domain' ), 'view_item' => __( 'View Product', 'text_domain' ), 'view_items' => __( 'View Items', 'text_domain' ), 'search_items' => __( 'Search products', 'text_domain' ), 'not_found' => __( 'No products found', 'text_domain' ), 'not_found_in_trash' => __( 'No products found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Product', 'text_domain' ), 'description' => __( 'Product information pages.', 'text_domain' ), 'labels' => $labels,
https://riptutorial.com/de/home 47
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'custom-fields', ), 'taxonomies' => array( 'category', 'post_tag' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-products', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', 'show_in_rest' => true, ); register_post_type( 'product', $args ); } add_action( 'init', 'products_post_type', 0 ); }
Benutzerdefinierter Beitragstyp mit fünfundzwanzig WordPress-Design
Sie können einen beliebigen Namen für die Funktion verwenden.
function custom_postype(){ register_post_type('cus_post',array( 'labels'=>array( 'name'=>'khaiyam'// Use any name you want to show in menu for your users ), 'public'=>true,// **Must required 'supports'=>array('title','editor','thumbnail')// Features you want to provide on your posts )); } add_action('after_setup_theme','custom_postytpe');
oder
add_action('init','custom_postytpe');
Sie können alle gewünschten Hooks verwenden, aber sie haben natürlich eine andere Bedeutung und Verwendung.
https://riptutorial.com/de/home 48
Benutzerdefinierter Beitragstyp in der Standardsuche
Sie können in der WordPress-Standardsuche benutzerdefinierte Posttyp-Posts hinzufügen
function my_search_filter($query) { if ( !is_admin() && $query->is_main_query() ) { if ($query->is_search) { $query->set('post_type', array( 'news','post','article' ) ); } } } add_action('pre_get_posts','my_search_filter');
Benutzerdefinierte Beitragstypen online lesen: https://riptutorial.com/de/wordpress/topic/1374/benutzerdefinierte-beitragstypen
https://riptutorial.com/de/home 49
Kapitel 15: Customizer Hallo Welt
Parameter
Parameter Einzelheiten
mein Thema
Eine eindeutige Kennung für Ihr Thema (oder untergeordnetes Thema). Dies kann dein Thema sein
Examples
Hallo Weltbeispiel
Das grundlegende Konzept des Customizers besteht darin, dass Administratoren Live-Änderungen an ihrer Website in der Vorschau anzeigen und diese dann dauerhaft hinzufügen können.
Folgendes kann kopiert und in die functions.php Datei eines Themas eingefügt werden
Fügen Sie einen Anpassungsabschnitt mit dem Namen " My First Section•Fügen Sie eine Anpassungseinstellung hinzu, die als Hello World Color damit der Administrator eine Farbe auswählen kann
•
Fügen Sie eine .hello-world Regel für .hello-world , die der ausgewählten Farbe entspricht und standardmäßig #000000 wenn nichts ausgewählt ist. Die Einstellung wird am Ende des <head> in ein <style> -Tag <head> .
•
function mytheme_customize_register( $wp_customize ) { $wp_customize->add_section( 'my_first_section_id' , array( 'title' => __( 'My First Section', 'mytheme' ), 'priority' => 30, ) ); $wp_customize->add_setting( 'hello_world_color' , array( 'default' => '#000000', 'transport' => 'refresh', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array( 'label' => __( 'Hello World Color', 'mytheme' ), 'section' => 'my_first_section_id', 'settings' => 'hello_world_color', ) ) ); } add_action( 'customize_register', 'mytheme_customize_register' );
https://riptutorial.com/de/home 50
function mytheme_customize_css() { ?> <style type="text/css"> .hello-world { color: #<?php echo get_theme_mod('hello_world_color', '000000'); ?>; } </style> <?php } add_action( 'wp_head', 'mytheme_customize_css');
Customizer Hallo Welt online lesen: https://riptutorial.com/de/wordpress/topic/2875/customizer-hallo-welt
https://riptutorial.com/de/home 51
Kapitel 16: Customizer-Grundlagen (Panel hinzufügen, Abschnitt, Einstellungen, Steuerung)
Examples
Fügen Sie ein Customizer-Panel hinzu
<?php /** * Panel: WPCustomize * * Basic Customizer panel with basic controls. * * @since 1.0.0 * @package WPC */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } // Customize function. if ( ! function_exists( 'wpc_panel_wpcustomize' ) ) { // Customize Register action. add_action( 'customize_register', 'wpc_panel_wpcustomize' ); /** * Customize Panel. * * Adds a Panel, Section with basic controls. * * @param object WP_Customize $wp_customize Instance of the WP_Customize_Manager class. * @since 1.0.0 */ function wpc_panel_wpcustomize( $wp_customize ) { // Panel: Basic. $wp_customize->add_panel( 'wpc_panel_wpcustomize', array( 'priority' => 10, 'title' => __( 'WPCustomize Panel Title', 'WPC' ), 'description' => __( 'Panel Description', 'WPC' ), 'capability' => 'edit_theme_options' ) ); } }
Fügen Sie einen Customizer-Abschnitt mit den Grundeinstellungen und ihren Steuerelementen hinzu
Panels können Abschnitte haben, Abschnitte können Einstellungen haben und Einstellungen können Steuerelemente haben. Einstellungen werden in der Datenbank gespeichert, während die
https://riptutorial.com/de/home 52
Steuerelemente für bestimmte Einstellungen nur dazu verwendet werden, dem Benutzer die entsprechenden Einstellungen anzuzeigen.
Dieser Code erstellt einen grundlegenden section im panel von oben. Im Inneren befinden sich einige grundlegende settings mit controls .
<?php /** * Section: Basic * * Basic Customizer section with basic controls. * * @since 1.0.0 * @package WPC */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } // Customize function. if ( ! function_exists( 'wpc_customize_panel_basic' ) ) { // Customize Register action. add_action( 'customize_register', 'wpc_customize_panel_basic' ); /** * Customize Panel. * * Adds a Panel, Section with basic controls. * * @param object WP_Customize $wp_customize Instance of the WP_Customize_Manager class. * @since 1.0.0 */ function wpc_customize_panel_basic( $wp_customize ) { // Section: Basic. $wp_customize->add_section( 'wpc_section_basic', array( 'priority' => 10, 'panel' => 'wpc_panel_wpcustomize', 'title' => __( 'Basic Section Title', 'WPC' ), 'description' => __( 'Section Description.', 'WPC' ), 'capability' => 'edit_theme_options' ) ); // Setting: Text. $wp_customize->add_setting( 'wpc_text', array( 'type' => 'theme_mod', 'default' => 'Placeholder.', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'esc_attr' ) ); // Control: Text. $wp_customize->add_control( 'wpc_text', array( 'label' => __( 'Text', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'text' ) );
https://riptutorial.com/de/home 53
// Setting: Textarea. $wp_customize->add_setting( 'wpc_textarea', array( 'type' => 'theme_mod', 'default' => 'Placeholder textarea.', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'exc_textarea' ) ); // Control: Textarea. $wp_customize->add_control( 'wpc_textarea', array( 'label' => __( 'Textarea', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'textarea' ) ); // Setting: Checkbox. $wp_customize->add_setting( 'wpc_checkbox', array( 'type' => 'theme_mod', 'default' => 'enable', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'wpc_sanitize_checkbox' // Custom function in customizer-sanitization.php file. ) ); // Control: Checkbox. $wp_customize->add_control( 'wpc_checkbox', array( 'label' => __( 'Checkbox', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'checkbox' ) ); // Setting: Radio. $wp_customize->add_setting( 'wpc_radio', array( 'type' => 'theme_mod', 'default' => 'on', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'wpc_sanitize_select', // Custom function in customizer-sanitization.php file. ) ); // Control: Radio. $wp_customize->add_control( 'wpc_radio', array( 'label' => __( 'Radio', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'radio', 'choices' => array( 'enable' => 'Enable', 'disable' => 'Disable' ) ) ); // Setting: Select. $wp_customize->add_setting( 'wpc_select', array( 'type' => 'theme_mod',
https://riptutorial.com/de/home 54
'default' => 'enable', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'wpc_sanitize_select' // Custom function in customizer-sanitization.php file. ) ); // Control: Select. $wp_customize->add_control( 'wpc_select', array( 'label' => __( 'Select', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'select', 'choices' => array( 'enable' => 'Enable', 'disable' => 'Disable' ) ) ); } }
Customizer-Grundlagen (Panel hinzufügen, Abschnitt, Einstellungen, Steuerung) online lesen: https://riptutorial.com/de/wordpress/topic/2930/customizer-grundlagen--panel-hinzufugen--abschnitt--einstellungen--steuerung-
https://riptutorial.com/de/home 55
Kapitel 17: Das $ wpdb-Objekt
Bemerkungen
Es gibt zwei Möglichkeiten, auf das Objekt $wpdb . Die erste besteht darin, das PHP-Schlüsselwort global zu verwenden, um auf die globale Instanz des Objekts zu reagieren.
global $wpdb; echo $wpdb->prefix; // Outputs the prefix for the database
Die zweite Möglichkeit, das $wpdb Objekt zu verwenden, besteht darin, die globale $GLOBALS PHP zu $GLOBALS .
echo $GLOBALS['wpdb']->prefix; // This will also output the prefix for the database
Der zweite Weg wird entmutigt, da er möglicherweise nicht als bewährte Methode angesehen wird.
Examples
Variable auswählen
In der einfachsten Form ist es möglich, eine einzelne Variable aus einer Tabelle auszuwählen, indem die Methode get_var des Objekts get_var wird, die in einer SQL-Abfrage übergeben wird.
global $wpdb; $user = $wpdb->get_var( "SELECT ID FROM $wpdb->users WHERE user_email='[email protected]'" );
Es ist sehr wichtig zu beachten, dass nicht vertrauenswürdige Werte, die in Abfragen verwendet werden, zum Schutz vor Angriffen geschützt werden müssen . Dies kann mit der prepare des Objekts erfolgen.
global $wpdb; $email = $_POST['email']; $user = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_email=%s", $email ) ); if( !is_null( $user ){ echo $user; } else { echo 'User not found'; }
Mehrere Zeilen auswählen
https://riptutorial.com/de/home 56
Sie können get_results verwenden, um mehrere Zeilen aus der Datenbank abzurufen.
global $wpdb; $userTable =$wpdb->prefix."users"; $selectUser = $wpdb->get_results("SELECT * FROM $userTable");
Dadurch wird die Liste aller Benutzer in einem Array angezeigt.
Das $ wpdb-Objekt online lesen: https://riptutorial.com/de/wordpress/topic/2691/das---wpdb-objekt
https://riptutorial.com/de/home 57
Kapitel 18: Debuggen
Einführung
https://codex.wordpress.org/Debugging_in_WordPress
Das Debuggen von PHP-Code ist Teil eines Projekts. WordPress verfügt jedoch über spezielle Debug-Systeme, die den Prozess vereinfachen sowie den Code für Kern, Plugins und Designs standardisieren.
Bemerkungen
Plugins zum Debuggen in WordPress:
https://wordpress.org/plugins/query-monitor/•https://wordpress.org/plugins/debug-bar/•https://wordpress.org/plugins/debug-bar-console/•https://wordpress.org/plugins/kint-debugger/•https://wordpress.org/plugins/rest-api-console/•
Examples
WP_DEBUG
WP_DEBUG ist eine PHP-Konstante (eine permanente globale Variable), mit der der Debug-Modus in WordPress ausgelöst werden kann. Es wird davon ausgegangen, dass es standardmäßig "false" ist und normalerweise in der Datei " wp-config.php " auf Entwicklungskopien von WordPress auf "true" gesetzt wird.
define( 'WP_DEBUG', true ); define( 'WP_DEBUG', false );
WP_DEBUG_LOG
WP_DEBUG_LOG ist ein Begleiter von WP_DEBUG, der bewirkt, dass alle Fehler auch in einer Protokolldatei debug.log im Verzeichnis / wp-content / gespeichert werden. Dies ist nützlich, wenn Sie alle Notizen später überprüfen möchten oder Notizen anzeigen möchten, die außerhalb des Bildschirms generiert wurden (z. B. während einer AJAX-Anforderung oder eines Wp-Cron-Laufs).
//enable define( 'WP_DEBUG_LOG', true ); //disable define( 'WP_DEBUG_LOG', false );
https://riptutorial.com/de/home 58
WP_DEBUG_DISPLAY
WP_DEBUG_DISPLAY ist ein weiterer Begleiter von WP_DEBUG, der steuert, ob Debugmeldungen im HTML-Code von Seiten angezeigt werden oder nicht. Der Standardwert ist "true", wodurch Fehler und Warnungen angezeigt werden, während sie generiert werden. Wenn Sie diese Option auf "false" setzen, werden alle Fehler ausgeblendet. Dies sollte in Verbindung mit WP_DEBUG_LOG verwendet werden, damit Fehler später überprüft werden können. Hinweis: Damit WP_DEBUG_DISPLAY irgendetwas tun kann, muss WP_DEBUG aktiviert sein (true).
//enable define( 'WP_DEBUG_DISPLAY', true ); //disable define( 'WP_DEBUG_DISPLAY', false );
SCRIPT_DEBUG
SCRIPT_DEBUG ist eine verwandte Konstante, die WordPress zwingt, die "dev" -Versionen der zentralen CSS- und JavaScript-Dateien zu verwenden, anstatt die minimierten Versionen, die normalerweise geladen werden. Dies ist hilfreich, wenn Sie Änderungen an eingebauten JS- oder CSS-Dateien testen. Standardeinstellung ist "false".
//enable define( 'SCRIPT_DEBUG', true ); //disable define( 'SCRIPT_DEBUG', false );
SAVEQUERIES
Die SAVEQUERIES-Definition speichert die Datenbankabfragen in einem Array. Dieses Array kann angezeigt werden, um diese Abfragen zu analysieren. Die als wahr definierte Konstante bewirkt, dass jede Abfrage gespeichert wird, wie lange diese Abfrage ausgeführt hat und welche Funktion sie aufgerufen hat. ANMERKUNG: Dies hat Auswirkungen auf die Leistung Ihrer Website. Deaktivieren Sie diese Option daher, wenn Sie nicht debuggen.
define( 'SAVEQUERIES', true );
Das Array wird im gespeichert
global $wpdb->queries;
Beispiel wp-config.php und bewährte Methoden zum Debuggen
Mit dem folgenden Code, der in Ihre Datei wp-config.php eingefügt wird, werden alle Fehler, Hinweise und Warnungen in einer Datei namens debug.log im Verzeichnis wp-content protokolliert. Außerdem werden die Fehler ausgeblendet, sodass die Seitengenerierung nicht unterbrochen wird.
https://riptutorial.com/de/home 59
// Enable WP_DEBUG mode define( 'WP_DEBUG', true ); // Enable Debug logging to the /wp-content/debug.log file define( 'WP_DEBUG_LOG', true ); // Disable display of errors and warnings define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 ); // Use dev versions of core JS and CSS files (only needed if you are modifying these core files) define( 'SCRIPT_DEBUG', true );
Bewährte Methode Wenn Sie benutzerdefinierte Meldungen zum Debug-Protokoll hinzufügen möchten, fügen Sie den folgenden Code in Ihr Plugin oder Design ein.
//Checking is function_exists if ( !function_exists( 'print_to_log' ) ) { //function writes a message to debug.log if debugging is turned on. function print_to_log( $message ) { if ( true === WP_DEBUG ) { if ( is_array( $message ) || is_object( $message ) ) { error_log( print_r( $message, true ) ); } else { error_log( $message ); } } } }
Protokolle in einer separaten Datei anzeigen
Wenn Sie einen Ajax-Anruf haben, ist es äußerst schwierig, ein Protokoll aus der Callback-Funktion heraus zu erhalten. Aber wenn Sie das Debugging aktivieren
define('WP_DEBUG', true);
und dann danach hinzufügen
ini_set('log_errors',TRUE); ini_set('error_reporting', E_ALL); ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
Sie haben eine error.log.txt Datei in Ihrem Stammordner, in der sich alle Ihre Protokolle befinden. Sie können sie sogar mit loggen
error_log( print_r( 'what I want to check goes here', true) );
in Ihrem Code. Dies wird Ihnen das Leben erleichtern.
Debuggen online lesen: https://riptutorial.com/de/wordpress/topic/9170/debuggen
https://riptutorial.com/de/home 60
Kapitel 19: der Titel()
Einführung
Diese Funktion gibt den Titel des aktuellen Beitrags zurück.
Syntax
the_title ($ before, $ after, $ echo);•
Parameter
Parameter Einzelheiten
$ vorher (Zeichenfolge) (optional) Text, der vor dem Titel platziert werden soll.
$ nach (Zeichenfolge) (optional) Nach dem Titel zu platzierender Text.
$ echo(Boolean) (optional) Zeigt den Titel an oder gibt ihn zur Verwendung in PHP zurück
Bemerkungen
Verwenden Sie für den Parameter $ echo true, um den Titel anzuzeigen, und false, um ihn zur Verwendung in PHP zurückzugeben
•
Bitte beachten Sie, dass the_title nur in Loops verwendet werden kann. Wenn Sie es außerhalb von Loops verwenden möchten, verwenden Sie get_the_title
•
Examples
Einfache Verwendung von the_title
Code
the_title( );
Ausgabe
Der Titel des aktuellen Beitrags oder der aktuellen Seite
Den Titel mit Code vor und nach drucken
Code
https://riptutorial.com/de/home 61
the_title( '<h1>', '</h1>' );
Ausgabe
Der Titel des aktuellen Beitrags oder der aktuellen Seite in h1-Tags
der Titel() online lesen: https://riptutorial.com/de/wordpress/topic/9213/der-titel--
https://riptutorial.com/de/home 62
Kapitel 20: Die Admin-Leiste (aka "Die Symbolleiste")
Bemerkungen
Die WordPress Admin Toolbar wurde in Version 3.1 hinzugefügt und enthält Links zu allgemeinen administrativen Aufgaben sowie Links zum Benutzerprofil und zu anderen WordPress-Informationen. Viele Websitebesitzer möchten die Symbolleiste jedoch standardmäßig nicht allen angemeldeten Benutzern anzeigen und / oder möchten eigene Optionen hinzufügen.
Examples
Entfernen der Admin-Symbolleiste von allen außer Administratoren
Fügen Sie den folgenden Code zu functions.php , um ihn von allen Benutzern außer der Administratorbenutzerebene zu entfernen:
add_action('after_setup_theme', 'no_admin_bar'); function no_admin_bar() { if (!current_user_can('administrator') && !is_admin()) { show_admin_bar(false); } }
Entfernen der Admin-Symbolleiste mithilfe von Filtern
Eine weitere Möglichkeit, die Admin-Leiste auszublenden, ist das Hinzufügen
if ( !current_user_can( 'manage_options' ) ) { add_filter( 'show_admin_bar', '__return_false' , 1000 ); }
Die Benutzer, die keine Zugriffsrechte für den Zugriff auf die Einstellungsseite haben, können die Admin-Leiste nicht sehen.
So entfernen Sie das WordPress-Logo aus der Admin-Leiste
Entwickler können die Aktion admin_bar_menu verwenden , um Elemente aus der WordPress-Adminleiste oder der Symbolleiste zu entfernen.
add_action('admin_bar_menu', 'remove_wp_logo_from_admin_bar', 999); function remove_wp_logo_from_admin_bar( $wp_admin_bar ) { $wp_admin_bar->remove_node('wp-logo'); }
https://riptutorial.com/de/home 63
Mit dem obigen Code wird das WordPress-Logo aus der Verwaltungsleiste entfernt. Alles, was Sie tun müssen, ist den Code in Ihre functions.php-Datei einzufügen.
Der an die remove_node-Methode übergebene Parameter ist die ID des Knotens, den Sie entfernen möchten. IDs finden Sie im HTML-Quellcode der WordPress-Seite mit einer Symbolleiste. Die ID des li-Elements für das WordPress-Logo auf der linken Seite der Symbolleiste lautet beispielsweise "wp-admin-bar-wp-logo":
<li id="wp-admin-bar-wp-logo" class="menupop"> … </li>
Entfernen Sie "wp-admin-bar-" von der li-ID, um die ID des Knotens zu erhalten. In diesem Beispiel lautet die Knoten-ID "wp-logo".
Sie können die Browser-Inspector-Tools verwenden, um die Knoten-IDs verschiedener Elemente oder Knoten in Ihrer Admin-Leiste herauszufinden.
Fügen Sie auf der Admin-Anmeldeseite Ihr eigenes Logo und Ihren benutzerdefinierten Link hinzu
Sie können unten stehende Haken hinzufügen, um Ihr eigenes Logo und einen Link hinzuzufügen, um das standardmäßige Wordpress-Logo zu ersetzen.
Hinzufügen eines benutzerdefinierten Logos
function custom_login_logo() { echo '<style type="text/css"> h1 a { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.png) !important; background-size : 100% !important; width: 300px !important; height : 100px !important;} </style>'; } add_action('login_head', 'custom_login_logo');
Hinzufügen eines benutzerdefinierten Logo-Links
add_filter( 'login_headerurl', 'custom_loginlogo_url' ); function custom_loginlogo_url($url) { return home_url(); }
Die Admin-Leiste (aka "Die Symbolleiste") online lesen: https://riptutorial.com/de/wordpress/topic/2932/die-admin-leiste--aka--die-symbolleiste--
https://riptutorial.com/de/home 64
Kapitel 21: Die Schleife (Haupt-WordPress-Schleife)
Examples
Grundlegende WordPress-Schleifenstruktur
Jedes Mal, wenn WordPress die Seite lädt, wird die Hauptschleife ausgeführt .
Die Schleife ist der Weg, um alle Elemente, die sich auf die aktuelle Seite beziehen, zu durchlaufen.
Die Hauptschleife funktioniert mit einem globalen WP_Query Objekt. Die Abfrage hat eine globalisierte Methode have_posts() , mit der alle Ergebnisse durchlaufen werden können. Schließlich können Sie innerhalb der Schleife die the_post() (auch als globale Funktion) aufrufen, die das globale Post-Objekt auf den aktuellen Post innerhalb der Schleife und die Postdaten auf den aktuellen Post setzt. Dank dessen können Sie Funktionen wie the_title , the_content , the_author ( Template-Tags ) direkt in der Schleife the_author .
Wenn Sie sich beispielsweise in Beitragslisten befinden, enthält die Hauptschleife ein Abfrageobjekt mit allen Beiträgen.
Wenn Sie sich auf einem einzelnen Beitrag (oder einer Seite) befinden, enthält dieser eine Abfrage mit einem einzelnen Beitrag (Seite), an dem Sie sich gerade befinden.
if ( have_posts() ) : while ( have_posts() ) : the_post(); var_dump( $post ); endwhile; endif;
Alternative Schleifensyntax
Sie können Schleife auch mit geschweiften Klammern wie folgt verwenden:
if ( have_posts() ) { while ( have_posts() ) { the_post(); var_dump( $post ); } }
Behandelt keine Elemente in der Schleife
https://riptutorial.com/de/home 65
Wenn Sie mit einem solchen Szenario umgehen möchten, fügen Sie einfach eine if/else Anweisung hinzu.
if ( have_posts() ) : while ( have_posts() ) : the_post(); var_dump( $post ); endwhile; else : __('This Query does not have any results'); endif;
Die Schleife (Haupt-WordPress-Schleife) online lesen: https://riptutorial.com/de/wordpress/topic/1803/die-schleife--haupt-wordpress-schleife-
https://riptutorial.com/de/home 66
Kapitel 22: drin
Syntax
add_action ('init', aufrufbare $ -Funktion)1.
Bemerkungen
init ist ein Action-Hook, der ausgelöst wird, nachdem WordPress das Laden beendet hat, aber bevor HTTP-Header gesendet werden.
Examples
$ _POST-Anforderungsdaten werden verarbeitet
add_action ('init', 'process_post_data');
function process_post_data() { if( isset( $_POST ) ) { // process $_POST data here } }
$ _GET-Anforderungsdaten werden verarbeitet
add_action('init', 'process_get_data'); function process_get_data() { if( isset( $_GET ) ) { // process $_GET data here } }
Registrieren eines benutzerdefinierten Beitragstyps
add_action( 'init', function() { register_post_type( 'event', array( 'public' => true, 'label' => 'Events' ); ); });
Registriert einen neuen benutzerdefinierten Beitragstyp mit einem Label Events und einem Slug- event
drin online lesen: https://riptutorial.com/de/wordpress/topic/6375/drin
https://riptutorial.com/de/home 67
Kapitel 23: Einreihen von Skripten
Syntax
wp_enqueue_script ($ handle, $ src, $ deps, $ ver, $ in_footer)•
Parameter
Parameter Einzelheiten
$ handle (string) (Erforderlich) Name des Skripts. Sollte einzigartig sein.
$ src(Zeichenfolge) (Optional) Vollständige URL des Skripts oder Pfad des Skripts relativ zum WordPress-Stammverzeichnis. Standardwert: false
$ deps(array) (Optional) Ein Array von registrierten Skripten behandelt dieses Skript. Standardwert: array ()
$ ver
(string | bool | null) (Optional) String, der die Versionsnummer des Skripts angibt, falls vorhanden, die der URL als Abfragezeichenfolge für Cache-Busting-Zwecke hinzugefügt wird. Wenn Version auf "False" gesetzt ist, wird automatisch eine Versionsnummer hinzugefügt, die der aktuell installierten WordPress-Version entspricht. Bei Einstellung auf null wird keine Version hinzugefügt. Standardwert: false
$ in_footer(bool) (Optional) Gibt an, ob das Skript vor </body> anstelle von <head> eingereiht werden soll. Standardwert: false
Examples
Einreihen von Skripten in functions.php
Wenn Sie das Script custom.js hinzufügen custom.js , das sich im Ordner js/ Ihres js/ , müssen Sie es in die Warteschlange setzen. In functions.php hinzufügen
<?php add_action( 'after_setup_theme', 'yourtheme_theme_setup' ); if ( ! function_exists( 'yourtheme_theme_setup' ) ) { function yourtheme_theme_setup() { add_action( 'wp_enqueue_scripts', 'yourtheme_scripts' ); add_action( 'admin_enqueue_scripts', 'yourtheme_admin_scripts' ); } }
https://riptutorial.com/de/home 68
if ( ! function_exists( 'yourtheme_scripts' ) ) { function yourtheme_scripts() { wp_enqueue_script( 'yourtheme_custom', get_template_directory_uri().'/js/custom.js', array( 'jquery' ), '1.0.0', true ); } } if ( ! function_exists( 'yourtheme_admin_scripts' ) ) { function yourtheme_admin_scripts() { wp_enqueue_script( 'yourtheme_custom', get_template_directory_uri().'/js/custom.js', array( 'jquery-ui-autocomplete', 'jquery' ), '1.0.0', true ); } }
Enqueue-Skripts nur für IE
add_action( 'wp_enqueue_scripts', 'enqueue_my_styles_and_scripts' ); /** * Enqueue scripts (or styles) conditionally. * * Load scripts (or stylesheets) specifically for IE. IE10 and above does * not support conditional comments in standards mode. * * @link https://gist.github.com/wpscholar/4947518 * @link https://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx */ function enqueue_my_styles_and_scripts() { // Internet Explorer HTML5 support wp_enqueue_script( 'html5shiv',get_template_directory_uri().'/js/html5shiv.js', array(), '3.7.3', false); wp_script_add_data( 'html5shiv', 'conditional', 'lt IE 9' ); // Internet Explorer 8 media query support wp_enqueue_script( 'respond', get_template_directory_uri().'/js/respond.js', array(), '1.4.2', false); wp_script_add_data( 'respond', 'conditional', 'lt IE 9' ); }
Skripte für bestimmte Seiten bedingt einreihen
Sie können bedingte Operatoren in WordPress verwenden, um Skripts auf bestimmten Seiten Ihrer Website einzufangen.
function load_script_for_single_post(){ if(is_single()){ wp_enqueue_script( 'some', get_template_directory_uri().'/js/some.js', array('jquery),
https://riptutorial.com/de/home 69
'1.0.0', false ); } } add_action('wp_enqueue_scripts','load_script_for_single_post');
Wenn im obigen Beispiel die aktuelle Webseite ein einzelner Beitrag ist, wird das Skript in die Warteschlange gestellt. Andernfalls wird die Funktion wp_enqueue_script nicht ausgeführt.
Einreihen von Skripten online lesen: https://riptutorial.com/de/wordpress/topic/1103/einreihen-von-skripten
https://riptutorial.com/de/home 70
Kapitel 24: Einreihen von Styles
Syntax
wp_enqueue_style ($ handle, $ src, $ Abhängigkeit, $ version, $ media);1.
Parameter
Parameter Einzelheiten
$handle (String) (Erforderlich) Eindeutiger Name für das Stylesheet.
$src(String) (Optional) URL des Stylesheets, das im src-Attribut des Link- Tags verwendet wird.
$deps (String) (Optional) Ein Array von Stylesheets behandelt dieses Stylesheet.
$ver (String) (Optional) String, der die Stylesheet-Version des Stylesheets angibt.
$media(String) (Optional) Das Medium, für das dieses Stylesheet erstellt wird. zB "Alle", "Drucken", "Bildschirm" usw
Examples
Einschließlich der internen CSS-Datei mit einer anderen CSS-Datei als Abhängigkeit
function themeSlug_enqueue_scripts() { wp_enqueue_style( 'themeSlug-reset', get_template_directory_uri() .'/css/reset.css', '1.0.0' ); wp_enqueue_style( 'themeSlug-style', get_template_directory_uri() .'/style.css', 'themeSlug-reset', '1.0.0'); } add_action('wp_enqueue_scripts', 'themeSlug_enqueue_scripts');
Einschließlich der internen CSS-Datei
In diesem Fall befindet sich style.css im Stammverzeichnis des style.css
function themeSlug_enqueue_scripts() { wp_enqueue_style( 'themeSlug-style', get_template_directory_uri() .'/style.css', '1.0.0'); } add_action('wp_enqueue_scripts', 'themeSlug_enqueue_scripts');
Einschließlich externer CSS-Datei
https://riptutorial.com/de/home 71
In diesem Beispiel möchten wir die Schriftart-Symbol-Schriftart einschließen
function themeSlug_enqueue_scripts() { wp_enqueue_style( 'font-awesome', '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css'); } add_action('wp_enqueue_scripts', 'themeSlug_enqueue_scripts');
Enqueue Stylesheets nur für IE
add_action( 'wp_enqueue_scripts', 'enqueue_my_styles_and_scripts' ); /** * Enqueue styles (or scripts) conditionally. * * Load stylesheets (or scripts) specifically for IE. IE10 and above does * not support conditional comments in standards mode. * * @link https://gist.github.com/wpscholar/4947518 * @link https://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx */ function enqueue_my_styles_and_scripts() { // Internet Explorer specific stylesheet. wp_enqueue_style( 'themename-ie', get_stylesheet_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' ); wp_style_add_data( 'themename-ie', 'conditional', 'lte IE 9' ); // Internet Explorer 7 specific stylesheet. wp_enqueue_style( 'themename-ie7', get_stylesheet_directory_uri() . '/css/ie7.css', array( 'twentyfifteen-style' ), '20141010' ); wp_style_add_data( 'themename-ie7', 'conditional', 'lt IE 8' ); }
Einschließlich der internen CSS-Datei für Ihre Plugin-Klasse
class My_Plugin() { function __construct() { add_action( 'wp_enqueue_scripts', array( $this, 'init_fe_assets' ) ); } public function init_fe_assests() { wp_enqueue_style( 'my-plugin', plugin_dir_url( __FILE__ ) . 'assets/css/frontend/plugin.css', array(), '0.0.1', true ); } } new My_Plugin();
Alternative Stylesheets hinzufügen
<?php wp_enqueue_style('theme-five', get_template_directory_uri() .
https://riptutorial.com/de/home 72
'/path/to/additional/css'); wp_style_add_data('theme-five', 'alt', true); wp_style_add_data('theme-five', 'title', __('theme-five.css', 'your-theme-name')); ?>
wp_style_add_data
Einreihen von Styles online lesen: https://riptutorial.com/de/wordpress/topic/1247/einreihen-von-styles
https://riptutorial.com/de/home 73
Kapitel 25: Entfernen Sie automatische Zeilenumbrüche aus Inhalt und Auszug
Einführung
Für Websites, die im Editor oder in Ausschnitten auf HTML-Code angewiesen sind und die Sie selbst codieren möchten, können die automatischen Zeilenumbrüche einen Ärger verursachen. Sie können sie deaktivieren, indem Sie diese Filter entfernen.
Bemerkungen
Diese müssen direkt in einer Include-Datei ausgeführt werden. Unabhängig davon, ob es sich in functions.php oder in einer anderen Include-Datei befindet, kann diese nicht in einen Hook eingeschlossen werden. Sie arbeiten nicht mit init oder anderen, die ich bisher gefunden habe.
Sie können auch direkt in eine Vorlage wie page.php eingefügt werden, um sie nur für diese Vorlage auszuführen.
HINWEIS: ENTHALTEN SIE DIESES NICHT IN EINEM VERTEILTEN THEMA ODER PLUGIN (es sei denn, es ist standardmäßig deaktiviert, z. B. wenn die Include-Datei nicht eingeschlossen ist, sofern der Benutzer dies nicht angibt).
Dies ist eine schlechte Praxis, um sie in eine Site einzubinden, die Sie nicht kontrollieren können, da dies die Ausgabe von anderen Themes oder Plugins beeinträchtigen kann und wird.
Examples
Entfernen Sie die Filter
// Remove the auto-paragraph and auto-line-break from the content remove_filter( 'the_content', 'wpautop' ); // Remove the auto-paragraph and auto-line-break from the excerpt remove_filter( 'the_excerpt', 'wpautop' );
Funktion zum Entfernen der Filter
/** * Remove the automatic line breaks from content and excerpts. * * @since 1.0.0 */ function remove_content_auto_line_breaks() { // Remove the auto-paragraph and auto-line-break from the content remove_filter( 'the_content', 'wpautop' );
https://riptutorial.com/de/home 74
// Remove the auto-paragraph and auto-line-break from the excerpt remove_filter( 'the_excerpt', 'wpautop' ); } // Execute the function remove_content_auto_line_breaks();
Entfernen Sie automatische Zeilenumbrüche aus Inhalt und Auszug online lesen: https://riptutorial.com/de/wordpress/topic/9614/entfernen-sie-automatische-zeilenumbruche-aus-inhalt-und-auszug
https://riptutorial.com/de/home 75
Kapitel 26: Erstellen einer benutzerdefinierten Vorlage
Examples
Erstellen einer einfachen leeren Vorlage
Um eine benutzerdefinierte Vorlage zu erstellen, müssen Sie zunächst eine php-Datei in einem Designverzeichnis erstellen. Sie können es fast beliebig benennen. Für dieses Beispiel erstellen wir example.php
Eine einzige Sache, die wir in unserer example.php definieren müssen, um von WordPress als Vorlage erkannt zu werden, ist der Name der Vorlage. Wir kaufen das, indem wir einen speziellen Kommentar an die Spitze einer Datei setzen, wie folgt:
<?php /* Template Name: Example */ ?>
Und jetzt, wenn unsere Vorlage in der Dropdown- Liste der Vorlagen im Feld Seitenattribute angezeigt werden soll
https://riptutorial.com/de/home 76
Einschließlich Kopf- und Fußzeile in unserer Vorlage
Lassen Sie uns unsere Vorlage von oben erweitern und Inhalte aus header.php und footer.php einschließen
Einschließlich Kopfzeile:
Wir werden den Header direkt nach dem Kommentar zum Vorlagennamen einfügen
Dafür gibt es zwei gängige Möglichkeiten. Beide sind richtig und funktionieren gleich, es geht nur um Ihren Stil und wie der Code aussieht
Erster Weg:
<?php /* Template Name: Example */ get_header(); ?>
https://riptutorial.com/de/home 77
Zweiter Weg:
<?php /* Template Name: Example */ ?> <?php get_header(); ?>
Fußzeile inklusive:
Das Einfügen von Fußzeilen funktioniert auf dieselbe Weise, es gibt nur eine Sache, die wir beachten müssen, und zwar, dass wir Fußzeile einschließen, nachdem wir die Kopfzeile eingefügt haben. Die endgültige Vorlage sollte also ungefähr so aussehen.
<?php /* Template Name: Example */ get_header(); ?> <?php get_footer(); ?>
Benutzerdefinierte Vorlage mit Inhalt
Wir werden unsere Vorlage weiter ausbauen und den Titel der Seite sowie einen Inhalt hinzufügen
<?php /* Template Name: Example */ get_header(); the_title(); the_content(); get_footer();
Und wenn Sie möchten, können Sie sie mit solchen HTML-Elementen umschließen
<?php /* Template Name: Example */ get_header(); echo '<h1>' . the_title() . '</h1>'; echo '<section> . 'the_content() . '</section>'; get_footer();
Oder wenn Sie es vorziehen, wie normale HTML-Dateien zu arbeiten, ohne Echo zu verwenden
https://riptutorial.com/de/home 78
<?php /* Template Name: Example */ get_header(); ?> <h1><?php the_title(); ?></h1> <section><?php the_content(); ?></section> <?php get_footer(); ?>
Erstellen einer benutzerdefinierten Vorlage online lesen: https://riptutorial.com/de/wordpress/topic/2791/erstellen-einer-benutzerdefinierten-vorlage
https://riptutorial.com/de/home 79
Kapitel 27: Erstellen Sie einen Beitrag programmgesteuert
Syntax
wp_insert_post (array $ args, bool $ wp_error);•
Parameter
Parameter Beschreibung
$ args (Array erforderlich) Ein Key Value Array der folgenden Elemente.
$ wp_error (optional Boolean) Geben Sie im Fehlerfall einen WP_Error zurück.
Bemerkungen
Argumente
Die nächste Tabelle zeigt eine Liste von Elementen, die Sie innerhalb des ersten Parameters (Array) verwenden können.
Parameter Beschreibung
ICH WÜRDE(Int) Die Post-ID. Bei einem anderen Wert als 0 wird der Beitrag mit dieser ID aktualisiert. Standardeinstellung 0.
post_author(Int) Die ID des Benutzers, der den Beitrag hinzugefügt hat. Standard ist die aktuelle Benutzer-ID.
nach Datum(String) Das Datum des Beitrags. Standard ist die aktuelle Uhrzeit.
post_date_gmt(String) Das Datum des Beitrags in der GMT-Zeitzone. Der Standardwert ist $ post_date.
post_content (Gemischt) Der Post-Inhalt. Standardwert leer
post_content_filtered (String) Der gefilterte Beitragsinhalt. Standardwert leer
post_title (String) Der Beitragstitel. Standardwert leer
https://riptutorial.com/de/home 80
Parameter Beschreibung
post_category (Array) Array von Post-Kategorie-Werten.
post_excerpt (String) Der Postauszug. Standardwert leer
Poststatus (String) Der Post-Status. Standardentwurf
Post-Typ (String) Der Beitragstyp. Standardbeitrag
comment_status(String) Gibt an, ob der Beitrag Kommentare akzeptieren kann. Akzeptiert offen oder geschlossen. Default ist der Wert der Option default_comment_status.
ping_status(String) Gibt an, ob der Beitrag Pings annehmen kann. Akzeptiert offen oder geschlossen. Default ist der Wert der Option default_ping_status.
post_password(String) Das Passwort für den Zugriff auf den Beitrag. Standardwert leer
Anschriftname(String) Der Postname oder Slug. Der Standardwert ist der bereinigte Beitragstitel, wenn Sie einen neuen Beitrag erstellen.
to_ping(String) Leerzeichen oder Wagenrücklauf-Liste der zu pingenden URLs. Standardwert leer
pinged(String) Durch Leerzeichen oder Wagenrücklauf getrennte Liste von URLs, die gepingt wurden. Standardwert leer
post_modified(String) Das Datum, an dem der Beitrag zuletzt geändert wurde. Standard ist die aktuelle Uhrzeit.
post_modified_gmt(String) Das Datum, an dem der Beitrag zuletzt in der GMT-Zeitzone geändert wurde. Standard ist die aktuelle Uhrzeit.
post_parent(Int) Legen Sie dies für den Post fest, zu dem es gehört, falls vorhanden. Standardeinstellung 0.
menu_order(Int) Die Reihenfolge, in der der Beitrag angezeigt werden soll. Standardeinstellung 0.
post_mime_type (String) Der Mime-Typ des Beitrags. Standardwert leer
guid(String) Globale eindeutige ID zum Verweisen auf den Beitrag. Standardwert leer
https://riptutorial.com/de/home 81
Parameter Beschreibung
tax_input(Array) Array von Taxonomie-Begriffen, die anhand ihres Taxonomienamens eingegeben werden. Standardwert leer
meta_input(Array) Array von Post-Meta-Werten, die nach ihrem Post-Meta-Schlüssel eingegeben werden. Standardwert leer
Vermeiden Sie doppelte Beiträge
Wenn Sie diese Funktion ausführen, erhalten Sie wahrscheinlich einen doppelten Beitrag, zumindest ist mir das passiert. (Sie können es in den Post WordPress-Bereich einchecken)
Ich habe eine Lösung gefunden :
if( !get_page_by_title( $title, 'OBJECT', 'post' ) ){ $my_post = array('post_title' => $title, 'post_content' => 'Content', 'tags_input' => $tags, 'post_category' => array(2), 'post_status' => 'publish' ); $result = wp_insert_post( $my_post ); }
Erläuterung
Bevor Sie einen neuen Beitrag speichern, überprüfen Sie, ob der neue Beitrag bereits vorhanden ist, indem Sie den Beitragstitel als Parameter verwenden. Wenn kein Beitragstitel vorhanden ist, können Sie Ihren neuen Beitrag speichern.
Überprüfen Sie die Dokumentation von get_page_by_title hier .
Examples
Einführung
Manchmal haben wir einen anderen Editor anstelle von TinyMCE (Wordpress Default Editor). Das passiert, wenn wir ein eigenes Theme, Plugin oder etwas bestimmtes erstellen. und wir müssen eine Art Post schreiben und bearbeiten und in unserer WP-Datenbank speichern.
Wenn Sie sich in dieser Situation befinden, können Sie eine Wordpress-Funktion mit dem Namen:
wp_insert_post( array $args, bool $wp_error );
Erstellen Sie einen Basisbeitrag
https://riptutorial.com/de/home 82
$basic_post_args = array( 'post_title' => 'My Basic Post', 'post_content' => 'This is a basic content', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(8, 59) ); wp_insert_post( $basic_post_args );
Erstellen Sie eine Basisseite
$basic_page_args = array( 'post_title' => 'My Basic Page', 'post_content' => 'This is a basic content', 'post_type' => 'page', 'post_status' => 'publish', 'post_author' => 1 ); wp_insert_post( $basic_page_args );
Erstellen Sie einen Beitrag programmgesteuert online lesen: https://riptutorial.com/de/wordpress/topic/5860/erstellen-sie-einen-beitrag-programmgesteuert
https://riptutorial.com/de/home 83
Kapitel 28: Erstellung des WordPress-Plugins
Einführung
WordPress-Plugins sollten sich auf die Serverlogik und / oder die Verwaltung Ihrer Website-Anwendung konzentrieren. Gute Plugins sind wie gute Apps, sie machen eine Sache wirklich gut. Sie dienen dazu, Teile des CMS modular zu erweitern und zu automatisieren, da Sie diese aktivieren und deaktivieren können. Gute Plugins verwenden WordPress-Kernaktionen, Filter und vorhandene Javascript- und CSS-Frameworks.
Examples
Minimale Einrichtung eines Plugin-Ordners und von Dateien
Der erste Schritt beim Erstellen eines Plugins ist das Erstellen des Ordners und der Datei, aus dem das Plugin geladen wird.
Plugins befinden sich in /wp-content/plugins/ .
Der WordPress-Standard besteht darin, einen Ordner und einen Dateinamen zu erstellen, die sich wie folgt spiegeln:
/wp-content/plugins/myplugin/ /wp-content/plugins/myplugin/myplugin.php
Nachdem Sie Ihre Plugin-Datei erstellt haben, müssen Sie Ihr Plugin mit einem Plugin Header starten. Auf diese Weise kann WordPress Ihre Plugin-Datei scannen und die Metadaten zum Plugin speichern. Außerdem können Benutzer dies verwenden und bestimmen, ob das Plugin aktiv oder inaktiv sein soll. Kopieren Sie diese Vorlage oben in Ihre von Ihnen erstellte Haupt-Plugin-Datei und ändern Sie sie nach Bedarf:
<?php /** * Plugin Name: PLUGIN-NAME * Plugin URI: HTTP-LINK-TO-WEBSITE-PLUGIN-PAGE-OR-REPO * Description: BREIF DESCRIPTION - KEEP IT SHORT * Author: WORDPRESS-DOT-ORG-USERNAME * Version: 0.0.1 * Author URI: HTTP-LINK-TO-MAINTAINER * License: GNU General Public License v2 or later * License URI: http://www.gnu.org/licenses/gpl-2.0.html * Text Domain: short_prefix */ // Begin custom PHP WordPress plugin work
Beachten Sie, dass WordPress-Plugins normalerweise als GPL lizenziert werden sollten. Die Lizenzierung sollte jedoch nicht als Teil dieses Themas diskutiert werden.
https://riptutorial.com/de/home 84
Zu diesem Zeitpunkt sollten Sie Ihr neues Plugin bereits im WordPress-Admin-Bereich sehen können. In einem Standard-Setup würden Sie diesen Bereich unter /wp-admin/plugins.php . Aktivieren Sie Ihr Plugin, und Sie können mit den nächsten Schritten zum Erstellen Ihres Plugins fortfahren!
Um unser Beispiel für etwas Durchführbares zu beenden, können Sie nun Folgendes am Ende Ihrer Plugin-Datei hinzufügen:
die('My custom plugin is loaded : '. __FILE__);
Wenn Sie Ihre Site nach dieser Änderung aktualisieren, sollten alle Seiten diesen Text drucken. Machen Sie dies niemals in Produktions- (Live-) Sites und denken Sie immer daran, dies wieder herauszunehmen, bevor Sie fortfahren.
Erstellung des WordPress-Plugins online lesen: https://riptutorial.com/de/wordpress/topic/9420/erstellung-des-wordpress-plugins
https://riptutorial.com/de/home 85
Kapitel 29: Führen Sie WordPress local mit XAMPP aus
Einführung
Mit XAMPP können Sie einen Webserver auf Ihrem lokalen PC installieren. Es verfügt über einen Apache-Webserver, die Datenbank MariaDB (MySQL) und arbeitet mit Perl und PHP. Nach der Installation können Sie beispielsweise Content-Management-Systeme wie WordPress auf Ihrem lokalen PC ausführen und debuggen. Sie können es mit Windows, Linux, Mac OS X und Solaris verwenden.
Examples
1. Installieren von XAMPP
Laden Sie das Installationsprogramm für die aktuelle Version von XAMPP herunter1. Gehen Sie den Installationsassistenten durch und ändern Sie nichts, wenn Sie sich nicht sicher sind, was Sie ändern.
2.
Nach der Installation sehen Sie die XAMPP-Systemsteuerung. Klicken Sie einfach auf die Start-Schaltfläche von Apache und MySQL, um beide mit der grundlegenden Konfiguration auszuführen.
3.
Wenn Ihr Computer mit einem lokalen Netzwerk verbunden ist und Sie auch von anderen Computern auf den Webserver zugreifen möchten, stellen Sie sicher, dass Ihre Firewall dies zulässt.
4.
2. Richten Sie nach der Installation von XAMPP eine Datenbank ein
Um WordPress auf Ihrem Computer auszuführen, müssen Sie zuerst eine Datenbank konfigurieren. Stellen Sie sicher, dass Apache und MySQL ausgeführt werden (siehe XAMPP installieren, Schritt 3).
Starten Sie einen Webbrowser Ihrer Wahl und geben Sie "localhost" in die Adresse ein.1. Wählen Sie Ihre bevorzugte Sprache und wählen Sie in der Kategorie "Tools" -> phpMyAdmin .2. Wählen Sie die Registerkarte Databases .3. Geben Sie unter "Create database" den Namen Ihrer Datenbank ein (diesen Namen benötigen Sie später), und wählen utf8_general_ci in der Dropdown-Liste "Collation" die Option utf8_general_ci aus.
4.
Klicken Sie links auf Ihre erstellte Datenbank und wählen Sie die Registerkarte Users .5. Fügen Sie einen neuen Benutzer hinzu, indem Sie auf Add user hinzufügen klicken.6. Geben Sie Ihren Benutzernamen ein, wählen Sie " local in der Dropdown-Liste "Host" (wenn Sie von anderen Computern im Netzwerk auf die Datenbank zugreifen möchten, wählen Sie " Any host ) und geben Sie Ihr Kennwort ein (dies wird später auch benötigt).
7.
Prüfen Sie, ob unter "Datenbank für Benutzer" Grant all privileges on wildcard name sind.8.
https://riptutorial.com/de/home 86
Drücken Sie Go .9.
3. Installieren von WordPress nach dem Einrichten der Datenbank
Nachdem Sie XAMPP installiert und die MySQL-Datenbank eingerichtet haben, können Sie WordPress installieren.
Laden Sie die neueste Version von WordPress herunter .1. Entpacken Sie die Datei und fügen Sie den Ordner in das Stammverzeichnis Ihres Webservers ein (wenn Sie den vorgeschlagenen Pfad während des Setups von XAMPP verwendet haben, ist dies "c: \ xampp \ htdocs").
2.
Alle Dateien, die doppelt vorhanden sind, können ersetzt werden.3. Geben Sie in das Adressfeld Ihres Webbrowsers "localhost / wordpress / wp-admin / install.php" ein.
4.
Nachdem Sie Ihre Sprache ausgewählt haben, klicken Sie auf Continue und dann Let's go .5. Ersetzen Sie alle Standardtextfelder durch Ihre gewählte Konfiguration (siehe " Einrichten einer Datenbank "). Ändern Sie "Database Host" und "Table Prefix" nicht, es sei denn, Sie möchten Ihre lokale WordPress-Installation online migrieren. Bedenken Sie dann, dass Sicherheit wichtig ist. Weitere Informationen finden Sie unter Präfix festlegen in Neue WordPress-Installation .
6.
Submit und dann auf Run the install .7. Nun müssen Sie den Namen Ihrer Site, einen Benutzernamen, ein Passwort und eine gültige E-Mail-Adresse eingeben.
8.
Klicken Install WordPress , um das Setup abzuschließen und sich bei Ihrer neuen lokalen WordPress-Site anzumelden.
9.
Führen Sie WordPress local mit XAMPP aus online lesen: https://riptutorial.com/de/wordpress/topic/9551/fuhren-sie-wordpress-local-mit-xampp-aus
https://riptutorial.com/de/home 87
Kapitel 30: Funktion: add_action ()
Syntax
add_action ($ tag, $ function_to_add)•add_action ($ tag, $ function_to_add, $ priority)•add_action ($ tag, $ function_to_add, $ Priorität, $ akzeptierte_args)•
Parameter
Parameter Einzelheiten
$ tag(Zeichenfolge) (Erforderlich) Der Name der Aktion, an die $function_to_add angehängt ist
$ function_to_add
( aufrufbar ) (Erforderlich) Die Funktion, die aufgerufen werden soll, wenn die durch $tag angegebene Aktion ausgeführt wird
$ Priorität
(int) (Optional) Standardwert: 10 Wird verwendet, um die Reihenfolge anzugeben, in der die einer bestimmten Aktion zugeordneten Funktionen ausgeführt werden. Niedrigere Zahlen entsprechen der früheren Ausführung, und Funktionen mit derselben Priorität werden in der Reihenfolge ausgeführt, in der sie der Aktion hinzugefügt wurden.
$ Accepted_args
(int) (Optional) Standardwert: 1 Die Anzahl der Argumente, die die Funktion akzeptiert.
Bemerkungen
Die add_action() Funktion erstellt einen Aktions Hook, eine PHP - Funktion mit einer bestimmten Aktion „Tag“ oder den Namen zuordnet. Wenn die Aktion durch einen Aufruf von do_action() (oder do_action_ref_array() ) mit einem bestimmten Tag "ausgelöst" wird, werden alle Funktionen ausgeführt, die mit diesem Tag do_action_ref_array() .
In den meisten Fällen sollte diese Funktion in der functions.php Datei eines Themas oder einer Plugin-Datei verwendet werden - oder in einer anderen Quelldatei, die von einer der beiden geladen wird.
Diese Funktion ist Teil der Plugin-API
Examples
Grundlegender Aktionshaken
https://riptutorial.com/de/home 88
Die einfachste Anwendung von add_action() ist das Hinzufügen von benutzerdefiniertem Code, der an einer bestimmten Stelle im Quellcode einer WordPress-Installation ausgeführt werden soll. Entweder mithilfe von Aktionen, die vom Core of WordPress bereitgestellt werden, oder durch Code von Drittanbietern (z. B. Plugins und) erstellten themen.
Um dem Abschnitt <head></head> der Site Inhalt hinzuzufügen - sagen Sie ein Meta-Element add <link> , um anzugeben, wo die Copyright-Informationen für die Site zu finden sind - add_action() kann zum Anhängen einer Funktion zum Drucken verwendet werden das entsprechende Markup für die 'wp_head' Aktion (die "auslöst", wenn WordPress den <head> -Abschnitt erstellt):
function add_copyright_meta_link() { echo( '<link rel="copyright" href="' . get_home_url() . '/copyright">' ); } add_action( 'wp_head', 'add_copyright_meta_link' );
Aktion Hook-Priorität
Es kann eine beliebige Anzahl von Funktionen mit einer bestimmten Aktion verknüpft werden. In einigen Fällen ist es wichtig, dass eine Hook-Funktion vor oder nach anderen ausgeführt wird. Hier kommt der dritte Parameter von add_action() , $priority zum Tragen.
Wenn das Argument $priority wird, wird die Funktion mit der Standardpriorität 10 angehängt. Wenn die Aktion "ausgelöst" wird, werden die "eingehängten" Funktionen aufgerufen, beginnend mit den mit der niedrigsten $priority hinzugefügten Funktionen und zu den Funktionen mit der höchsten $priority . Alle Hook-Funktionen mit derselben Priorität werden in der Reihenfolge aufgerufen, in der sie hinzugefügt wurden (der Reihenfolge, in der ihre jeweiligen add_action() Aufrufe ausgeführt wurden).
Angenommen, ein Plug-In eines Drittanbieters verwendet eine Funktion, die mit der Aktion 'template_redirect' verknüpft ist, um Besucher von der Seite mit dem daily-deal an einen Partner-Link für eine externe E-Commerce-Site weiterzuleiten. Sie möchten jedoch die Weiterleitung nur für angemeldete Benutzer auftreten. Sie müssten Ihren eigenen 'template_redirect' -Hook verwenden, um abgemeldete Besucher an die Anmeldeseite zu senden. Nachdem Sie festgestellt haben, dass das $piority eines $piority seine Funktion mit der voreingestellten $piority von 10 , können Sie Ihre Funktion mit der Priorität 9 $piority , um sicherzustellen, dass Ihre angemeldete Prüfung zuerst erfolgt:
function redirect_deal_visitors_to_login() { if( is_page( 'daily-deal' ) && !user_is_logged_in() ) { wp_redirect( wp_login_url() ); exit(); } } add_action( 'template_redirect', 'redirect_deal_visitors_to_login', 9 );
Klassen- und Objektmethoden mit Aktionen verknüpfen
https://riptutorial.com/de/home 89
PHP-Klassen sind ein leistungsfähiges Werkzeug zur Verbesserung der Code-Organisation und zur Minimierung von Namenskollisionen. Irgendwann stellt sich unweigerlich die Frage, wie man einen Action-Hook für eine Klassenmethode erstellt.
Das Argument $function_to_add wird häufig als Zeichenfolge angezeigt, die den Namen der Funktion enthält. Der Datentyp des Arguments ist jedoch tatsächlich " aufrufbar ", was für unsere Zwecke als "Referenz auf eine Funktion oder Methode" zusammengefasst werden kann.
Es gibt eine Reihe von aufrufbaren Formaten, mit denen Methoden auf Klassen und Objekte referenziert werden können. In allen Fällen muss jedoch die referenzierte Verfahren öffentlich sein sichtbar . Eine Methode ist public, wenn dem public Schlüsselwort entweder ein Präfix vorangestellt wird oder überhaupt kein Sichtbarkeitsschlüsselwort (in diesem Fall ist die Methode standardmäßig öffentlich).
Objektmethode Aktionshaken
Objektmethoden werden für eine bestimmte Instanz einer Klasse ausgeführt.
class My_Class { // Constructor function My_Class() { // (Instantiation logic) } // Initialization function public function initialize() { // (Initialization logic) } }
Nach der Instantiierung der obigen Klasse wie folgt:
$my_class_instance = new My_Class();
Die Methode initialize() wird normalerweise für das Objekt aufgerufen, indem $my_class_instance->initialize(); aufgerufen wird $my_class_instance->initialize(); . Das Ankoppeln der Methode an die 'init' WordPress-Aktion erfolgt durch Übergeben eines Arrays, das eine Referenz auf die Instanz enthält, und einer Zeichenfolge, die den Namen der Objektmethode enthält:
add_action( 'init', [ $my_class_instance, 'initialize' ] );
Wenn add_action() innerhalb einer Objektmethode aufgerufen wird, kann auch die add_action() $this verwendet werden:
class My_Class { // Constructor function My_Class() { // (Instantiation logic)
https://riptutorial.com/de/home 90
add_action( 'init', [ $this, 'initialize' ] ); } // Initialization function public function initialize() { // (Initialization logic) } }
Klassenmethode Aktionshaken
Klassenmethoden werden statisch für eine Klasse und nicht für eine bestimmte Instanz ausgeführt. Angesichts der folgenden Klasse
class My_Class { // Initialization function public static function initialize() { // (Initialization logic) } }
Die Methode initialize() wird normalerweise mit dem Operator :: scope-resolution aufgerufen, dh My_Class::initialize(); . Das Ankoppeln einer statischen Klassenmethode an eine WordPress-Datei kann auf verschiedene Arten erfolgen:
Verwenden eines Arrays aus einer Zeichenfolge, die den Klassennamen enthält, und einer Zeichenfolge, die den Methodennamen enthält:
add_action( 'init', [ 'My_Class', 'initialize' ] );
•
Übergeben einer Zeichenfolge, die eine vollständige Referenz auf die Methode enthält, einschließlich des Operators ::
add_action( 'init', 'My_Class::initialize' );
•
Wenn add_action() innerhalb einer statischen Klassenmethode __CLASS__ wird, kann anstelle des Klassennamens das Schlüsselwort self oder die magische Konstante __CLASS__ verwendet werden. Beachten Sie, dass dies im Allgemeinen nicht zu empfehlen ist, da die Werte dieser Elemente im Fall der Klassenvererbung etwas kontrapunktisch werden.
class My_Class { // Setup function public static function setup_actions() { add_action( 'init', 'self::initialize' ); } // Initialization function public static function initialize() { // (Initialization logic)
•
https://riptutorial.com/de/home 91
} }
Funktion: add_action () online lesen: https://riptutorial.com/de/wordpress/topic/6561/funktion--add-action---
https://riptutorial.com/de/home 92
Kapitel 31: Funktion: wp_trim_words ()
Syntax
<?php $trimmed_text = wp_trim_words( $text, $num_words = 55, $more = null ); ?>•
Parameter
Parameter Einzelheiten
$text (String) (Erforderlich) Text, der gekürzt oder gekürzt wird.
$num_words (Ganzzahl) (Erforderlich) Anzahl der Wörter, auf die der Text beschränkt ist.
$more (String) (Optional) Was wird angefügt, wenn $ text gekürzt werden muss.
Examples
Post-Inhalt beschneiden
Diese Funktion verkürzt den Text auf eine bestimmte Anzahl von Wörtern und gibt den gekürzten Text zurück.
<?php echo wp_trim_words( get_the_content(), 40, '...' ); ?>
Im obigen Beispiel übergeben wir den Post-Inhalt an die Funktion. Dadurch wird die Länge des Inhalts auf 40 Wörter begrenzt und der Rest der Wörter wird beschnitten.
Funktion: wp_trim_words () online lesen: https://riptutorial.com/de/wordpress/topic/7866/funktion--wp-trim-words---
https://riptutorial.com/de/home 93
Kapitel 32: get_bloginfo ()
Einführung
Ruft Informationen zur aktuellen Site ab.
Syntax
get_bloginfo ($ show, $ filter)•
Parameter
Parameter Einzelheiten
$ show (Zeichenfolge) Die abzurufenden Site-Setting-Informationen.
$ filter(string) Die Angabe, ob ein gefilterter Wert zurückgegeben werden soll oder nicht.
Bemerkungen
$ show
Werte Beschreibung Beispiel
'name' (Standardeinstellung)
Seitentitel 'Matt Mullenweg'
'Beschreibung' Website-Tagline 'Just another WordPress site'
'wpurl'URL der WordPress-Installation. site_url() Funktion site_url()
'http://example.com' , 'http://localhost/wordpress'
"URL"URL der Site home_url() Funktion home_url()
'http://example.com' , 'http://localhost/wordpress'
'admin_email'E-Mail-Adresse des Hauptadministrators
'Zeichensatz'Zeichenkodierung der Seiten und Feeds
'UTF-8'
'Ausführung'Aktuelle Version der WordPress-Installation
'4.5'
https://riptutorial.com/de/home 94
Werte Beschreibung Beispiel
'html_type'Inhaltstyp Wert des HTML
'text/html'
'Textrichtung'Textrichtung, die von der Sprache der Site bestimmt wird
'ltr'
'Sprache'Sprachcode nach ISO 639-1
'en-US'
'stylesheet_url'
URL des Stylesheets des aktivierten Designs. Wertpriorität: Untergeordnetes Thema »Übergeordnetes Thema.
'http://example.com/wp-content/themes/twentysixteen/style.css'
'stylesheet_directory'
Ressourcenstandort des aktivierten Themas. Wertpriorität: Untergeordnetes Thema »Übergeordnetes Thema.
'http://example.com/wp-content/themes/twentysixteen'
'template_url'
URL-Verzeichnis des aktivierten Designs. Wertpriorität: Übergeordnetes Thema »Untergeordnetes Thema.
'http://example.com/wp-content/themes/twentysixteen'
'template_directory' Gleich wie 'template_url'
'pingback_url'Pingback-XML-RPC-Datei
'http://example/xmlrpc.php'
'atom_url' Atom-Feed-URL 'http://example/feed/atom/'
'rdf_url'RDF / RSS 1.0-Feed-URL
'http://example/feed/rdf/'
'rss_url' RSS 0.92-Feed-URL 'http://example/feed/rss/'
'rss2_url' RSS 2.0-Feed-URL 'http://example/feed/'
'comments_atom_url'Kommentare Atom-Feed-URL
'http://example/comments/feed/atom/'
https://riptutorial.com/de/home 95
Werte Beschreibung Beispiel
'Seiten-URL'(veraltet) Verwenden Sie stattdessen 'url'
'Zuhause'(veraltet) Verwenden Sie stattdessen 'url'
$ filter
Werte Beschreibung Beispiel
'roh' (Standardeinstellung)
Es werden keine Filter angewendet Rohdaten
'Anzeige'Filter werden auf den Rückgabewert angewendet, wenn $show weder 'url' noch 'directory' oder 'home'
gefilterte Daten
Examples
Den Seitentitel abrufen
<?php echo get_bloginfo( 'name' ); ?>
oder
<?php echo get_bloginfo(); ?>
Ausgabe
Matt Mullenweg
Basierend auf diesen Beispieleinstellungen
https://riptutorial.com/de/home 96
Den Site-Slogan erhalten
<?php echo get_bloginfo( 'description' ); ?>
Ausgabe
Just another WordPress site
Basierend auf diesen Beispieleinstellungen
https://riptutorial.com/de/home 97
Abrufen der aktiven Design-URL
<?php echo esc_url( get_bloginfo( 'stylesheet_directory' ) ); ?>
Ausgabe
http://example.com/wp-content/themes/twentysixteen
Alternativen
get_bloginfo( 'stylesheet_directory' ) ruft get_stylesheet_directory_uri() möchten Sie das stattdessen verwenden:
<?php echo esc_url( get_stylesheet_directory_uri() ); ?>
https://riptutorial.com/de/home 98
Viele Entwickler ziehen es vor, diese dedizierten Funktionen aufgrund inkonsistenter Namenskonventionen zwischen ihnen und get_bloginfo() . Beispielsweise gibt get_stylesheet_directory() den Pfad des get_stylesheet_directory() zurück. Wie unser vorheriges Beispiel zeigt, gibt get_bloginfo( 'stylesheet_directory' ) die get_bloginfo( 'stylesheet_directory' ) URL zurück. Wenn Sie stattdessen get_stylesheet_directory_uri() verwenden, besteht weniger Verwechslungsgefahr, wenn Sie einen Pfad oder eine URL get_stylesheet_directory_uri() .
Rufen Sie die Site-URL ab
<?php echo esc_url(get_bloginfo('url')); ?>
oder wenn Sie auf eine Unterseite verlinken mussten
<?php echo esc_url(get_bloginfo('url') . '/some-sub-page'); ?>
Erhalten Sie die E-Mail-Adresse des Site-Administrators
Wir können die Funktion get_bloginfo verwenden, um die E-Mail-Adresse des get_bloginfo abzurufen.
<?php echo get_bloginfo('admin_email'); ?>
get_bloginfo () online lesen: https://riptutorial.com/de/wordpress/topic/524/get-bloginfo---
https://riptutorial.com/de/home 99
Kapitel 33: get_home_path ()
Einführung
Holen Sie sich den absoluten Dateisystempfad zum Stammverzeichnis der WordPress-Installation.
Parameter
Parameter Einzelheiten
Keiner Diese Funktion akzeptiert keine Parameter.
Bemerkungen
Wichtiger Unterschied zwischen get_home_path() und ABSTPATH
Bitte beachten Sie den Unterschied zwischen ABSPATH und get_home_path() wenn Sie WordPress in einem Unterordner installiert haben.
Die Funktion get_home_path() gibt immer einen Pfad ohne den Unterordner zurück:
http://www.example.com - / var / www / htdocs / beispiel•http://www.example.com/wp - / var / www / htdocs / beispiel•
So unterscheidet es sich von ABSPATH , wodurch unterschiedliche Werte zurückgegeben werden:
http://www.example.com - / var / www / htdocs / beispiel•http://www.example.com/wp - / var / www / htdocs / example / wp•
ABSPATH wird zuerst in wp-load.php die sich unter /var/www/htdocs/example/wp/wp-load.php befindet. ABSPATH wird ABSPATH seine Definition übernehmen.
get_home_path() überprüft, ob sich site_url und home_url unterscheiden, und entfernt den Teilstring aus dem Pfad. Andernfalls wird der ABSPATH Wert zurückgegeben:
function get_home_path() { $home = set_url_scheme( get_option( 'home' ), 'http' ); $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos ); $home_path = trailingslashit( $home_path ); } else { $home_path = ABSPATH;
https://riptutorial.com/de/home 100
} return str_replace( '\\', '/', $home_path ); }
Verwenden Sie es in Ihrem Code
Der Aufruf von get_home_path() muss in einem Kontext erfolgen, in dem wp-admin/includes/file.php bereits enthalten ist.
Die Verwendung von get_home_path() innerhalb des admin_init ist beispielsweise in Ordnung, aber die Verwendung innerhalb von init ist nicht und führt zu einem schwerwiegenden PHP-Fehler:
Call to undefined function get_home_path()
Diese Datei wird nur aus dem Admin-Kontext (Dashboard) eingefügt. Wenn Sie sie außerhalb dieses Kontextes unbedingt benötigen, müssen Sie die Datei selbst einschließen, bevor Sie die Funktion aufrufen:
require_once(ABSPATH . 'wp-admin/includes/file.php');
Examples
Verwendungszweck
$path = get_home_path();
Rückgabewert:
string
Vollständiger Dateisystempfad zum Stammverzeichnis der WordPress-Installation, auch wenn es in einem Unterordner installiert ist.
Beispiel:
/var/www/htdocs/example
get_home_path () online lesen: https://riptutorial.com/de/wordpress/topic/9699/get-home-path---
https://riptutorial.com/de/home 101
Kapitel 34: get_option ()
Einführung
Ruft einen Optionswert basierend auf einem Optionsnamen ab.
Syntax
get_option ($ option, $ default)•
Parameter
Parameter Einzelheiten
Option $ (string) Name der abzurufenden Option. Erwartet, nicht mit SQL zu umgehen.
$ default(mixed) (Optional) Standardwert, der zurückgegeben werden soll, wenn die Option nicht vorhanden ist.
Bemerkungen
Liste der Argumente für die Option $
'admin_email'•'blogname'•'blogdescription'•'blog_charset'•'Datumsformat'•'default_category'•'Zuhause'•'Seiten-URL'•'Vorlage'•'start_of_week'•'upload_path'•'users_can_register'•'posts_per_page'•'posts_per_rss'•
Examples
Blogtitel anzeigen
Code
https://riptutorial.com/de/home 102
<h1><?php echo get_option( 'blogname' ); ?></h1>
Ausgabe
Name des Blogs im H1-Stil
Zeichensatz anzeigen
Code
<p><?php echo esc_html( sprintf( __( 'Character set: %s', 'textdomain' ), get_option( 'blog_charset' ) ) ); ?></p>
Ausgabe
Zeichensatz: UTF-8
Behandlung nicht vorhandener Optionen
Code
<?php echo get_option( 'something_bla_bla_bla' ); ?>
Ausgabe
falsch
Code
<?php echo get_option( 'something_bla_bla_bla', 'Oh no!' ); ?>
Ausgabe
Ach nein!
get_option () online lesen: https://riptutorial.com/de/wordpress/topic/9194/get-option---
https://riptutorial.com/de/home 103
Kapitel 35: get_permalink ()
Einführung
Diese Funktion gibt den vollständigen Paralink des aktuellen Beitrags oder des angegebenen Beitrags zurück.
Syntax
get_permalink ($ post, $ leavename)•
Parameter
Parameter Einzelheiten
$ post(int) (optional) Beitragskennung oder Beitragsobjekt. Standard ist die ID des aktuellen Beitrags.
$ leavename
(bool) (optional) Gibt an, ob der Post- oder Seitenname beibehalten werden soll.
Bemerkungen
Für den Parameter $ leavename ist dieser standardmäßig falsch.
Examples
Einfache Verwendung von get_parmalink
Code
echo get_permalink();
Ausgabe
Der Link der aktuellen Seite, zum Beispiel: http://website.com/category/name-of-post/
Angabe des Beitrags zum Abrufen des Links
Code
echo get_permalink( 44 );
https://riptutorial.com/de/home 104
Ausgabe
Der Link der Beitrags-ID: 44, zum Beispiel: http://website.com/category/name-of-post/
Holen Sie sich den Link ohne den Namen des Beitrags
Code
echo get_permalink( 44 , false );
Ausgabe
Der Link der Beitrags-ID: 44 ohne den Namen des Beitrags, zum Beispiel: http://website.com/category/%postname%/
get_permalink () online lesen: https://riptutorial.com/de/wordpress/topic/9209/get-permalink---
https://riptutorial.com/de/home 105
Kapitel 36: get_template_part ()
Syntax
get_template_part ($ slug, $ name);•get_template_part ($ slug);•
Parameter
Parameter Einzelheiten
$ slug (String) Generischer Vorlagennullname
$ name (Zeichenfolge) Name der spezialisierten Vorlage
Examples
Laden Sie einen Vorlagenteil aus einem Unterordner
get_template_part( 'foo/bar', 'page');
erfordert 'bar-page.php' aus dem Verzeichnis 'foo'.
Holen Sie sich eine bestimmte Datei
Mit dieser Funktion können Sie bestimmte Dateien abrufen.
get_template_part('template-parts/layout');
Fügen Sie die Datei layout.php aus dem Unterverzeichnis template-parts ein, das sich im Stammordner Ihres Designordners befindet.
get_template_part () online lesen: https://riptutorial.com/de/wordpress/topic/5897/get-template-part---
https://riptutorial.com/de/home 106
Kapitel 37: get_template_part ()
Einführung
Der Zweck dieser Funktion ist die Standardisierung des Importierens von Partials oder Komponenten eines Designs in die Hauptdesignvorlage. Sie können eine Standard-PHP-SSI (Server Side Includes) verwenden, es gibt jedoch einige Vorteile bei der Verwendung von get_template_part (). Die Verwendung dieser Funktion reduziert Fehler, die für weniger erfahrene Entwickler anfällig sind, die versuchen, einen vollständig qualifizierten Pfad auf dem Server zu identifizieren. Außerdem schlägt der Fehler fehl, wenn keine Dateien vorhanden sind, und behandelt ein benutzerdefiniertes Hierarchieschutzsystem ("Fuzzy Template Search").
Syntax
get_template_part ($ slug)•get_template_part ($ slug, $ name)•
Parameter
Parameter Einzelheiten
$ slug (Zeichenfolge) Der Slug-Name der benutzerdefinierten Vorlage.
$ name (Zeichenfolge) Der Name der spezialisierten Vorlage. Wahlweise
Examples
Einschließlich einer benutzerdefinierten Vorlage
<?php get_template_part( 'foo' ); ?>
Enthält
../wp-content/themes/your-theme-slug/foo.php
Einschließlich einer benutzerdefinierten Vorlage mit einem durch Bindestrich getrennten Dateinamen
<?php get_template_part( 'foo','bar' ); ?>
Enthält
https://riptutorial.com/de/home 107
../wp-content/themes/your-theme-slug/foo-bar.php
Einschließlich einer benutzerdefinierten Vorlage aus einem Verzeichnis
<?php get_template_part( 'dir/foo' ); ?>
Enthält
../wp-content/themes/your-theme-slug/dir/foo.php
Einschließlich einer benutzerdefinierten Vorlage mit einem durch Bindestrich getrennten Dateinamen in einem Verzeichnis
<?php get_template_part( 'dir/foo', 'bar' ); ?>
Enthält
../wp-content/themes/your-theme-slug/dir/foo-bar.php
Übergabe der Variable an den benutzerdefinierten Vorlagenbereich
<?php set_query_var( 'passed_var', $my_var ); get_template_part( 'foo', 'bar' ); ?>
foo-bar.php Sie darauf in foo-bar.php
<?php echo $passed_var; ?>
get_template_part () online lesen: https://riptutorial.com/de/wordpress/topic/5993/get-template-part---
https://riptutorial.com/de/home 108
Kapitel 38: get_template_part ()
Syntax
get_template_part ('Dateiname-Erweiterung');•
Parameter
Parameter Beschreibung
Dateiname-Nr-Erweiterung
Der Name des Vorlagenteils ohne Erweiterung. ZB 'foo' statt 'foo.php'
Examples
Vorlage laden
Zieht den Code aus einer bestimmten angegebenen Datei in eine andere Datei, in der der Aufruf erfolgte.
ZB in example.php
<h1>Hello World!</h1>
In page.php
// header code get_template_part('example'); // rest of page code
Ausgabe:
// header code <h1>Hello World</h1> // rest of page code
get_template_part () online lesen: https://riptutorial.com/de/wordpress/topic/6267/get-template-part---
https://riptutorial.com/de/home 109
Kapitel 39: get_the_category ()
Einführung
Diese Funktion gibt alle Kategorien als Array des aktuellen Beitrags oder der aktuellen Seite oder des angegebenen Beitrags oder der angegebenen Seite zurück.
Syntax
get_the_category ($ id)•
Parameter
Parameter Einzelheiten
$ id (int) (optional) Standardeinstellung der aktuellen Beitrags-ID. Die Post-ID
Bemerkungen
Bitte beachten Sie, dass get_the_category () ein Array zurückgibt, was bedeutet, dass Sie den zurückgegebenen Wert nicht direkt wiederholen können.
Hier ist eine Liste von Objekten jeder Kategorie, die Sie drucken können:
term_id•Name•Schnecke•term_group•term_taxonomy_id•Taxonomie•Beschreibung•Elternteil•Anzahl•Objekt Identifikation•Filter•cat_ID•category_count•Kategorie beschreibung•Katzenname•kategoriename•category_parent•
Examples
https://riptutorial.com/de/home 110
Holen Sie sich alle Namen der Kategorien des Beitrags
Code
$categories = get_the_category(); foreach( $categories as $category ) { echo $category->name . '<br />'; }
Ausgabe
Alle Kategorienamen der aktuellen Seite, einer in jeder Zeile.
Holen Sie sich alle IDs der Kategorien des Beitrags
Code
$categories = get_the_category(); foreach( $categories as $category ) { echo $category->term_id . '<br />'; }
Ausgabe
Alle IDs der Kategorien der aktuellen Seite, eine in jeder Zeile.
get_the_category () online lesen: https://riptutorial.com/de/wordpress/topic/9211/get-the-category---
https://riptutorial.com/de/home 111
Kapitel 40: get_the_title ()
Einführung
Diese Funktion gibt den Titel des aktuellen Beitrags oder des angegebenen Beitrags zurück.
Syntax
get_the_title ($ post)•
Parameter
Parameter Einzelheiten
$ post(int) (optional) Beitragskennung oder Beitragsobjekt. Standard ist die ID des aktuellen Beitrags.
Bemerkungen
Wenn Sie vorhaben, den Titel eines Beitrags oder einer Seite mithilfe einer Nachschleife abzurufen, wird empfohlen, stattdessen the_title () zu verwenden.
Examples
Einfache Verwendung von get_the_title
Code
get_the_title();
Ausgabe
Der Titel des aktuellen Beitrags oder der aktuellen Seite
Ruft den Titel einer angegebenen Beitrags-ID ab
Code
get_the_title( 44 );
Ausgabe
Der Titel der Beitrags-ID: 44.
https://riptutorial.com/de/home 112
get_the_title () online lesen: https://riptutorial.com/de/wordpress/topic/9214/get-the-title---
https://riptutorial.com/de/home 113
Kapitel 41: Grundlegendes zum Thema Kind
Syntax
Vorlage –– ist der Name des Haupt-WordPress-Designs, des übergeordneten Elements.•child-theme –– ist das Paket, das die Vorlage überschreibt.•
Bemerkungen
Ich habe angekündigt, dass die Verwendung eines Kindermotivs immer eine gute Sache ist, aber es gibt immer ein ...
In unserem Beispiel zum Überschreiben von Vorlagen stellen wir uns vor, dass der Autor eines Designs seine eigenen Verbesserungen zur Seitenleistenvorlage hinzufügt und es eine neue gibt
/themes/template/sidebar.php
<?php /** * The template for the sidebar containing the main widget area * * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials */ if ( is_active_sidebar( 'sidebar-1' ) ) : ?> <aside id="secondary" class="sidebar widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </aside><!-- .sidebar .widget-area --> <?php endif; ?>
Nun wird unsere Website nicht von der neuen role="complementary" /themes/child-theme/sidebar.php profitieren, da unser /themes/child-theme/sidebar.php die Vorlage immer noch mit einer eigenen Datei unter /themes/child-theme/sidebar.php
Es ist unsere Pflicht als Website-Betreuer, den Überblick darüber zu behalten, welche Vorlagen wir überschreiben, und im bevorstehenden Fall eines Updates sorgfältig auf das Änderungsprotokoll achten, damit Sie bei Bedarf die untergeordneten Designdateien aktualisieren.
Examples
2) Der Zweck
Die untergeordneten Themen sind eine sichere Methode, um Anpassungen der Hauptvorlage beizubehalten, ohne befürchten zu müssen, dass sie bei einem Themenupdate verloren gehen.
Grundsätzlich müssen Sie sich immer dann fragen, wenn Sie eine Datei innerhalb der aktiven Vorlage von Ihrer Website aus bearbeiten möchten. " Was passiert, wenn ich das Design aktualisiere?"
https://riptutorial.com/de/home 114
Und die Antwort ist einfach: Sie verlieren sie, weil das Update einen völlig neuen Themenordner mit sich bringt .
Betrachten wir also ein untergeordnetes Design als Ordner mit Dateien, die die Dateien mit demselben Pfad im übergeordneten Design überschreiben. Lassen Sie uns nun einige Beispiele anführen:
Definition und Anforderungen
Ein untergeordnetes Design wird von WordPress identifiziert, wenn sich in /wp-content/themes/ ein Verzeichnis (z. B. child-theme ) mit folgenden Dateien befindet:
style.css
Diese Datei muss mit einer Kommentarvorlage wie folgt beginnen:
/* Theme Name: Example Child Author: Me Author URI: https://example.com/ Template: example Text Domain: example-child-theme Domain Path: /languages/ */
Die wichtigsten Dinge, die hier zu beachten sind, sind:
Der Template muss genau der Ordnername sein, der das übergeordnete Design enthält (auch bekannt als übergeordnetes Design-Slug).
○
Nennen Sie Ihr Kind Thema in einer solchen Art und Weise Sie leicht in Dashboard identifizieren kann ( in der Regel nur anhängen Child an die Eltern Namen, wie Example Child )
○
•
index.php•
functions.php•
3) Überschreiben der Vorlage
Ein untergeordnetes Thema wird am häufigsten verwendet, um Vorlagenteile zu überschreiben. Zum Beispiel eine Seitenleiste, wenn wir ein Theme mit der folgenden Datei unter haben
/themes/template/sidebar.php
<?php /** * The sidebar containing the main widget area. * * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials */ if ( ! is_active_sidebar( 'sidebar-1' ) ) {
https://riptutorial.com/de/home 115
return; }?> <div id="sidebar" class="widget-area"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </div>
Wir können definitiv unsere eigene Datei im Child-Theme (mit den Spezifikationen des ersten Beispiels) mit der folgenden Datei hinzufügen
/themes/child-theme/sidebar.php
<?php /** * The sidebar containing the main widget area. */ if ( ! is_active_sidebar( 'sidebar-1' ) ) { return; }?> <div id="my-sidebar" class="my-own-awesome-class widget-area"> <div class="my-wrapper"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </div> </div>
Jetzt my-own-awesome-class ist in den Kindern Thema sicher und es wird nicht zu jedem Thema Update entfernt werden und Wordpress wird immer eine Vorlage von Kind Themen wählen , wenn es einen auf dem gleichen Weg finden wird.
Ersatz von Vermögenswerten
Auch wenn dies keine bewährte Methode ist, müssen Sie manchmal Assets wie CSS- oder JS-Dateien oder -Bibliotheken ersetzen.
Beachten Sie, dass das System zum Überschreiben der WordPress-Vorlage nur mit .php Dateien .php Wenn wir über Assets sprechen, beziehen wir uns auf registrierte Assets
Ein Beispiel könnte die Ersetzung der jQuery-Bibliothek durch Ihre gewünschte Version sein. In unserer untergeordneten Datei functions.php wir eine Funktion hinzufügen, die die aktuelle jQuery Version entfernt, und unsere eigene aus CDN hinzufügen (erinnern Sie sich nur an ein Beispiel).
/** * Dequeue the jQuery script and add our own version. * * Hooked to the wp_print_scripts action, with a late priority (100), * so that it is after the script was enqueued. */ function my_own_theme_scripts() { // remove the current version wp_dequeue_script( 'jquery' ); // register my desired version wp_register_script( 'jquery', 'https://code.jquery.com/jquery-3.1.0.min.js', false, '3.1.0' ); // load my version, here or somewhere else
https://riptutorial.com/de/home 116
wp_enqueue_script( 'jquery' ); } add_action( 'wp_print_scripts', 'my_own_theme_scripts' );
Grundlegendes zum Thema Kind online lesen: https://riptutorial.com/de/wordpress/topic/6238/grundlegendes-zum-thema-kind
https://riptutorial.com/de/home 117
Kapitel 42: Hinzufügen / Entfernen von Kontaktinformationen für Benutzer mit dem Filterhaken user_contactmethods
Examples
Aktivieren der beliebtesten sozialen Netzwerke
function social_profiles( $contactmethods ) { $contactmethods['facebook_profile'] = 'Facebook Profile URL'; $contactmethods['twitter_profile'] = 'Twitter Profile URL'; $contactmethods['google_profile'] = 'Google Profile URL'; $contactmethods['linkedin_profile'] = 'Linkedin Profile URL'; $contactmethods['github_profile'] = 'GitHub Profile URL'; $contactmethods['behance_profile'] = 'Behance Profile URL'; $contactmethods['dribbble_profile'] = 'Dribbble Profile URL'; $contactmethods['stack_profile'] = 'Stack Exchange Profile URL'; $contactmethods['twitch_profile'] = 'Twitch Profile URL'; $contactmethods['angellist_profile'] = 'AngelList Profile URL'; return $contactmethods; } add_filter( 'user_contactmethods', 'social_profiles', 10, 1);
Sie erhalten diese Dateien in Ihrem Dashboard:
https://riptutorial.com/de/home 118
Und so rufen Sie es im Code ab
<?php $user_stack_exchange = get_the_author_meta( 'stack_profile' ); ?>
Kontaktmethode entfernen
function remove_contact_methods( $contactmethods ) { unset($contactmethods['facebook_profile']); unset($contactmethods['twitter_profile']); return $contactmethods; } add_filter( 'user_contactmethods', 'remove_contact_methods', 10, 1);
Hinzufügen / Entfernen von Kontaktinformationen für Benutzer mit dem Filterhaken user_contactmethods online lesen: https://riptutorial.com/de/wordpress/topic/2694/hinzufugen---entfernen-von-kontaktinformationen-fur-benutzer-mit-dem-filterhaken-user-contactmethods
https://riptutorial.com/de/home 119
Kapitel 43: home_url ()
Syntax
home_url ($ pfad, $ schema);•
Parameter
Parameter Einzelheiten
$ path ( String , optional ) Zum Hinzufügen weiterer Segmente nach der Heimat-URL.
$ Schema( String , optional ) Schema für den Kontext der Heimat-URL. Akzeptiert 'http', 'https', 'relative', 'rest' oder null.
Examples
Abrufen der Heimat-URL
home_url() wird zum Abrufen der aktuellen Site-Home-URL verwendet.
<?php echo esc_url( home_url( '/' ) ) ); ?>
Ausgabe
http://www.example.com
Seiten-URL
Gibt die 'site_url' Option mit dem entsprechenden Protokoll zurück ( https: //)
<?php echo site_url(); ?>
Ausgabe
http://www.example.com
home_url () online lesen: https://riptutorial.com/de/wordpress/topic/1252/home-url---
https://riptutorial.com/de/home 120
Kapitel 44: Installation und Konfiguration
Examples
Wordpress auf LAMP
Ich habe die folgenden Schritte auf Amazon EC2 mit Ubuntu 14.04 getestet
Hier eine Zusammenfassung der Befehlszeilen zum Installieren des LAMP-Technologiestacks (vor der Installation von WordPress):
1: Installieren Sie den LAMP-Technologie-Stack
Aktualisieren Sie Linux
#> sudo apt-get update -> Informationen zu Paket-Repositorys
#> sudo apt-get upgrade -> Paketaktualisierungen installieren
Installieren Sie apache2
#> sudo apt-get install apache2
Installieren Sie PHP
#> sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
Installieren Sie MySQL
#> sudo apt-get install mysql-server php5-mysql
Installieren Sie phpmyadmin
#> sudo apt-get install phpmyadmin
Falls ein Fehler aufgetreten ist, entfernen Sie das installierte Paket und seine Konfigurationsdatei (en).
#> sudo apt-get purge package_name
Sobald der Stack installiert ist, folgen Sie den Schritten, um die Installation von WordPress abzuschließen:
2: Installieren Sie WordPress
wget https://wordpress.org/latest.zip1.
sudo mkdir /var/www/wordpress2.
Verschieben Sie die ZIP-Datei in / var / www / wordpress und extrahieren Sie sie.3.
cd /etc/apache2/sites-available/4.
https://riptutorial.com/de/home 121
sudo cp 000-default.conf wordpress.conf5.
Ändern Sie wordpress.conf so, dass apache2 alle Anfragen oder Ihre Domäne an den Wordpress-App-Ordner weiterleiten kann.
6.
sudo a2ensite wordpress.conf7.
sudo service apache2 restart8.
Rufen Sie PhpMyAdmin über Ihren Browser über youdomain.com/phpmyadmin auf. Erstellen Sie einen neuen Benutzer „WordPress“ und prüfen Sie, ob die entsprechende Datenbank erstellt werden soll. cd /var/www/wordpress
9.
sudo cp wp-config-example.php wp-config.php10.
Ändern Sie die Konfigurationsdatei, um Informationen zur MySQL-Wordpress-Datenbank hinzuzufügen.
11.
sudo chown -R www-data:www-data /var/www/wordpress12.
sudo chmod -R 755 /var/www/wordpress/13.
Öffnen Sie den Browser und geben Sie Ihre Domäne ein. Sie sollten die WordPress-Installationsseite sehen. Folge der Anweisung und du bist fertig!
14.
Installation WP in MAMP
Es ist ziemlich einfach, WordPress in MAMP zu installieren.
Sie müssen ein paar einfache Schritte befolgen:
1 - Laden Sie MAMP hier herunter, es ist kostenlos und Sie benötigen wahrscheinlich keine Pro-Version.
2 - Installieren Sie auf Ihrem PC oder Mac.
3 - Starten Sie das Programm -> Sie sehen ein kleines Fenster, von dem aus Sie MAMP einstellen können. Lassen Sie im Moment alle voreingestellten Werte, für die erste Installation müssen Sie Ihr Leben nicht komplizieren! Denken Sie in Zukunft daran, Ihr Passwort und Ihren Benutzernamen für die MySQL-Datenbank zu ändern. Standardmäßig ist es root.
4 - Klicken Sie auf "WebStart-Seite öffnen" - hier können Sie Ihre Dateninformationen wie Kennwort, Admin-Name und auch Informationen zu MAMP anzeigen.
5 - Klicken Sie auf tools -> phpMyAdmin und Sie werden zur Datenbankseite weitergeleitet.
6 - Erstellen Sie eine neue Datenbank, klicken Sie auf "Neu" und geben Sie den gewünschten Namen ein. Diesen Namen benötigen Sie später.
7 - Suchen Sie nun nach einem Ordner namens "htdocs". Er befindet sich im Ordner MAMP auf Ihrem PC oder Mac. Wenn Sie einen Mac verwenden, müssen Sie die Anwendung im Finder auswählen und die App mit "Paketinhalt anzeigen" öffnen. Darin finden Sie den Ordner htdocs .
https://riptutorial.com/de/home 122
8 - Nehmen Sie den Wordpress-Ordner und kopieren Sie ihn in die htdocs. Sie müssen ihn in allen Ordnern ablegen, nicht die ZIP-Datei. Benennen Sie den Ordner um, den Sie mit Ihrem Projektnamen anrufen können.
9 - Kehren Sie in Ihrem Browser zum Fenster von MAMP zurück und klicken Sie auf "Meine Website". Dadurch wird ein URL-Aufruf http://localhost:8888 geöffnet. Hier können Sie den Ordner sehen, den Sie im Ordner htdocs haben. Klicken Sie auf den Namen, den Sie dem Ordner gegeben haben.
10 - Starten Sie nun eine normale Installation von WordPress. Sie müssen Admin und Passwort verwenden. Standardmäßig sind dies root und root , und verwenden Sie den Namen der zuvor erstellten Datenbank.
11 - Führen Sie die Installation aus und beenden Sie die Installation!
Sie finden Ihre Website unter http://localhost:8888/namefolder Natürlich müssen Sie MAMP weiterhin ausführen.
Installation und Konfiguration online lesen: https://riptutorial.com/de/wordpress/topic/6606/installation-und-konfiguration
https://riptutorial.com/de/home 123
Kapitel 45: Kurzcode
Examples
Kurzcode registrieren
Shortcode ist ein kleiner Code, der in den WordPress-Editor eingefügt werden kann und etwas anderes ausgibt, sobald die Seite veröffentlicht oder in der Vorschau angezeigt wird.
Häufig werden Kurzwahlnummern zu dem Thema hinzugefügt functions.php Datei, aber das ist keine gute Praxis als Kurzwahlnummern nach wechselnden Themen zu halten erwartet arbeiten. Schreiben Sie stattdessen ein Plugin , um diese Funktionalität hinzuzufügen.
Die Struktur für die Registrierung von Shortcode lautet:
function new_shortcode($atts, $content = null){ // if parameters are needed in the shortcode // parameters can be set to default to something extract( shortcode_atts( array( 'param_one' => 'h1' ), $atts ) ); $shortcode = '<'.$param_one'>'.$content.'</'.$param_one.'>'; return $shortcode; } // this is what registers the shortcode with wordpress add_shortcode('demo-shortcode','new_shortcode');
Innerhalb des WordPress-Editors können Sie Folgendes eingeben:
[demo-shortcode param_one="h2"]Demo[/demo-shortcode] // you don't need to insert param_one into the editor if it has a default value. // having it in the editor will override the default
Sobald die Seite veröffentlicht ist, wird daraus
<h2>Demo</h2>
Verwenden von Shortcodes in WordPress Backend
[footag foo="value of 1" attribute-2="value of 2"]
In WordPress Admin verwenden wir vordefinierte Shortcodes, indem Sie den Namen des Shortcodes in eckige Klammern schreiben und optional Attribute durch Leerzeichen hinzufügen.
Neue Shortcodes hinzufügen
function footag_func( $atts ) { return "foo = {$atts['foo']}";
https://riptutorial.com/de/home 124
} add_shortcode( 'footag', 'footag_func' );
In Plugins können wir Shortcodes mit der Funktion add_shortcode hinzufügen.
Der Shortcode kann in jeder Wordpress-Seite oder in jedem Post verwendet werden, indem er in eckige Klammern gesetzt wird.
[footag]
Verwenden von Shortcodes in PHP-Code (Designs und Plugins)
<?php echo do_shortcode("[footag foo='Hi! I am a foo output']"); ?>
Um einen Shortcode mit PHP zu drucken, verwenden Sie die do_shortcode Funktion und geben den zurückgegebenen Wert aus.
Verwenden von Shortcodes in Widgets
add_filter( 'widget_text', 'shortcode_unautop' ); add_filter( 'widget_text', 'do_shortcode' );enter code here
Fügen Sie dies einem Plugin oder der Datei functions.php , um Shortcodes in Widgets zu aktivieren. Der Code stoppt zunächst WordPress-Zeilenumbrüche in Absatz-Tags und lässt dann Shortcodes nach Widgets analysieren. Die Reihenfolge der beiden Zeilen ist wichtig.
Kurzcode online lesen: https://riptutorial.com/de/wordpress/topic/4952/kurzcode
https://riptutorial.com/de/home 125
Kapitel 46: Kurzcode mit Attribut
Syntax
add_shortcode ('your_short_code', 'your_function_name');•
Parameter
Parameter Beschreibung und Verwendung
$ tag(Zeichenfolge) (erforderlich) Shortcode-Tag, das im Post-Inhalt gesucht werden soll Standard: Keine
$ func(aufrufbar) (erforderlich) Hook zum Ausführen, wenn Shortcode gefunden wird Standard: Keine
Bemerkungen
WICHTIG - Verwenden Sie nicht camelCase oder UPPER-CASE für Ihre Attribute
Sie können einen Shortcode mit dem Attribut Here erzeugen
Examples
Beispiele für Shortcodes
WordPress-Shortcodes wurden in 2.5 eingeführt
Hier ist ein Beispiel für einen Shortcode
[button]
do_shortcode() direkt in ein Theme zu verwenden, müssen Sie do_shortcode()
<?php echo do_shortcode('[button]'); ?>
Um die Schaltfläche anzupassen, können Sie einfach Folgendes hinzufügen:
[button type="twitter"]
Oder um es noch besser zu machen, könnten wir einen einschließenden Kurzcode verwenden:
[button type="twitter"]Follow me on Twitter![/button]
https://riptutorial.com/de/home 126
Erstellen eines selbstschließenden Shortcodes
Der einfachste Shortcode ist der selbstschließende. Wir werden einen einfachen Link zu unserem Twitter-Account erstellen und ihn dann in einem Blogbeitrag hinzufügen. Der gesamte Code wird in functions.php /wp-content/themes/your-theme/ , die sich in /wp-content/themes/your-theme/ . Wenn Sie noch keinen haben, erstellen Sie ihn einfach und geben Sie den Code ein.
<?php function button_shortcode() { return '<a href="http://twitter.com/rupomkhondaker" class="twitter-button">Follow me on Twitter!</a>"'; } add_shortcode('button', 'button_shortcode'); ?>
Verwendung: [button]
Erstellen eines selbstschließenden Kurzcodes mit Parametern
Erstellen eines selbstschließenden Kurzcodes mit Parametern
<?php function button_shortcode( $type ) { extract( shortcode_atts( array( 'type' => 'value' ), $type ) ); // check what type user entered switch ($type) { case 'twitter': return '<a href="http://twitter.com/rupomkhondaker" class="twitter-button">Follw me on Twitter!</a>'; break; case 'rss': return '<a href="http://example.com/rss" class="rss-button">Subscribe to the feed!</a>' break; } } add_shortcode( 'button', 'button_shortcode' ); ?>
Jetzt können Sie auswählen, welche Schaltfläche angezeigt werden soll, indem Sie den Typ Ihres Kurzcodes definieren.
[button type="twitter"] [button type="rss"]
Erstellen eines umschließenden Kurzcodes
https://riptutorial.com/de/home 127
Kurzcode einschließen
Mit dem beiliegenden Shortcode können Sie Inhalte in Ihren Shortcode einbetten, genau wie BBCode, falls Sie das jemals verwendet haben.
<?php function button_shortcode( $attr, $content = null ) { return '<a href="http://twitter.com/filipstefansson" class="twitter-button">' . $content . '</a>'; } add_shortcode('button', 'button_shortcode'); ?>
Um diesen Shortcode zu verwenden, binden Sie den zu verwendenden Text folgendermaßen ein:
[button]Follow me on Twitter![/button]
Um diese Schaltfläche noch besser zu machen, können Sie wie im vorherigen Beispiel Parameter hinzufügen.
<?php function button_shortcode( $atts, $content = null ) { extract( shortcode_atts( array( 'account' => 'account', 'style' => 'style' ), $atts ) ); return '<a href="http://twitter.com/' . esc_attr($account) . '" class="twitter-button ' . esc_attr($style) . '">' . $content . '</a>'; } add_shortcode('button', 'button_shortcode'); ?>
Verwendungszweck:
[button account="rupomkhondaker" style="simple"]Follow me on Twitter![/button]
Kurzwahlen in Widgets
Standardmäßig unterstützt WordPress keine Shortcodes in Sidebar-Widgets. Es erweitert nur die Kurzwahlen innerhalb des Inhalts eines Beitrags, einer Seite oder eines benutzerdefinierten Beitragstyps. Um Sidebar-Widgets mit Shortcode zu unterstützen, können Sie ein Plugin installieren oder den folgenden Code verwenden:
add_filter( 'widget_text', 'shortcode_unautop' ); add_filter( 'widget_text', 'do_shortcode' );
Es ist wichtig, dass diese Zeilen in dieser Reihenfolge hinzugefügt werden. Die erste Zeile verhindert, dass WordPress Zeilenumbrüche in Absatz-Tags umwandelt, da Shortcodes nicht funktionieren. Die zweite Zeile ist die, in der die Kurzcodes funktionieren.
Kurzcode mit Attribut online lesen: https://riptutorial.com/de/wordpress/topic/6291/kurzcode-mit-
https://riptutorial.com/de/home 128
attribut
https://riptutorial.com/de/home 129
Kapitel 47: Kurzwahlnummern
Examples
Shortcode-Einführung
Shortcodes sind nützlich, wenn Sie komplexere Elemente inline in den normalen Inhaltseditor einfügen möchten.
Ein Shortcode in seiner einfachsten Form würde folgendermaßen aussehen:
function my_shortcode( ){ return "This is a shortcode"; } add_shortcode( 'my_shortcode', 'my_shortcode' );
Es würde den Text "This is a shortcode" ausgeben und Sie würden es verwenden, indem Sie [my_shortcode] im Inhaltseditor schreiben.
Tastenkürzel
Hier ist ein Beispiel für einen einfachen Tastenkürzel:
<?php function my_button_shortcode( $atts ) { // Parse the input attributes and assgn default values for the // attributes that are not specified on the shortcode $a = shortcode_atts( array( 'id' => '', 'url' => '#', 'class' => '', 'text' => '' ), $atts ); // Open the anchor tag and add role=button for better accessibility $btn_html = '<a role="button"'; // Add the href(link) attribute $btn_html .= ' href="' . $a['url'] . '"'; // Add id attribute to output if specified if ( !empty( $a['id'] ) ) { $btn_html .= ' id="' . $a['id'] . '"'; } $btn_classes = 'button'; // Add class attribute to output $btn_html .= ' class="button ' . ( !empty(a['class']) ? $a['class'] : '' ) . '"'; // Close opening anchor tag
https://riptutorial.com/de/home 130
$btn_html .= '>'. // Add button text $a['text']. // Add closing anchor tag '</a>'."\n"; return $btn_html; } add_shortcode( 'button', 'my_button_shortcode' );
Dieser Shortcode kann verwendet werden, indem Sie [button url="/my-other-page" id="my-other-page-button" class="dark" text="Click me!"] In den Editor [button url="/my-other-page" id="my-other-page-button" class="dark" text="Click me!"] und die folgendes HTML:
<a role="button" href="/my-other-page" id="my-other-page-button" class="button dark">Click me!</a>
Kurzwahlnummern online lesen: https://riptutorial.com/de/wordpress/topic/6070/kurzwahlnummern
https://riptutorial.com/de/home 131
Kapitel 48: Meta Box
Einführung
Einfache Verwendung einer Meta Box in den Content-Editoren von wp-admin
Syntax
_x ('Text', 'Description', 'textdomain') wird verwendet, um eine Beschreibung für den Übersetzungsdienst anstelle von __ ('Text', 'textdomain') hinzuzufügen
•
_ex ('Text', 'Description', 'textdomain') wird verwendet, um den übersetzten Text mit einer Beschreibung widerzuspiegeln
•
Bemerkungen
Der Inhalt in der Render-Meta-Box kann beliebig sein. Anstatt die Werte direkt zu integrieren, können Sie auch ein include mit einer PHP-Vorlage verwenden und die set_query_var Methode verwenden, um Daten an sie zu übergeben. Das Speichern würde auf dieselbe Weise funktionieren.
Examples
Ein einfaches Beispiel mit einer regulären Eingabe und einer Auswahleingabe
/** * Add meta box to post types. * * @since 1.0.0 */ function myplugin_add_meta_box() { // Set up the default post types/ $types = array( 'post', ); // Optional filter for adding the meta box to more types. Uncomment to use. // $types = apply_filters( 'myplugin_meta_box_types', $types ); // Add the meta box to the page add_meta_box( 'myplugin-meta-box', // Meta Box Id. Can be anything. _x( 'Custom Meta', 'Custom Meta Box', 'myplugin' ), // The title of the meta box. Translation is optional. Can just be string. 'myplugin_render_meta_box', // The render meta box function. $types, // Add the post types to which to add the meta box. 'side', // Show on the side of edit. 'high' // Show at top of edit. ); }
https://riptutorial.com/de/home 132
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' ); /** * Render the meta box. * * This shows examples of a basic input and a select inside a meta box. These can be anything. * * @since 1.0.0 * * @param $post WP_Post The post being edited. */ function myplugin_render_meta_box( $post ) { // Get the current post meta values for our custom meta box. $city = get_post_meta( $post->ID, 'city', true ); // True is for returning a single value. $country = get_post_meta( $post->ID, 'country', true ); // True is for returning a single value. // Add the WP Nonce field for security. wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_meta_nonce' ); ?> <p> <label for="city"> <?php _ex( 'City', 'Custom Meta Box Template', 'myplugin' ); ?> </label> <input name="city" id="city" value="<?php echo $city; ?>" /> </p> <p> <label for="country"> <?php _ex( 'Country', 'Custom Meta Box Template', 'myplugin' ); ?> </label> <select name="country" id="country"> <option value="United States" <?php selected( $country, 'United States' ); ?>><?php _ex( 'United States', 'Custom Meta Box Template', 'myplugin' ); ?></option> <option value="Mexico" <?php selected( $country, 'Mexico' ); ?>><?php _ex( 'Mexico', 'Custom Meta Box Template', 'myplugin' ); ?></option> <option value="Canada" <?php selected( $country, 'Canada' ); ?>><?php _ex( 'Canada', 'Custom Meta Box Template', 'myplugin' ); ?></option> </select> </p> <?php } /** * Save meta box data. * * @since 1.0.0 * * @param $post_id int The Id of the Post being saved. */ function myplugin_save_meta_data( $post_id ) { // Verify this is not an auto save. if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } // Validate the meta box nonce for security. if ( ! isset( $_POST['myplugin_meta_nonce'] ) || ! wp_verify_nonce(
https://riptutorial.com/de/home 133
$_POST['myplugin_meta_nonce'], plugin_basename( __FILE__ ) ) ) { return; } // Get the new values from the form. $city = $_POST['city']; $country = $_POST['country']; // update_post_meta will add the value if it doesn't exist or update it if it does. update_post_meta( $post_id, 'city', $city ); update_post_meta( $post_id, 'country', $country ); /* * OPTIONAL ALTERNATIVE * * Instead of just using update_post_meta, you could also check the values and * issue create/update/delete on the post meta value. */ // $current_city_value = get_post_meta( $post_id, 'city', true ); // True is for returning a single value. // // // Add the post meta if it doesn't exist. // if ( $city && '' === $city ) { // add_post_meta( $post_id, 'city', $city, true ); // True means the key is unique to the post. False is default and more than one can be added. // } // // Edit the post meta if it does exist and there is a new value. // elseif ( $city && $city != $current_city_value ) { // update_post_meta( $post_id, 'city', $city ); // } // // Delete the post meta if there is no new value. // elseif ( '' === $city && $current_city_value ) { // delete_post_meta( $post_id, 'city', $current_city_value ); // $current_city_value is optional and is used to differentiate between other values with the same key. // } } add_action( 'save_post', 'myplugin_save_meta_data' );
Meta Box online lesen: https://riptutorial.com/de/wordpress/topic/9611/meta-box
https://riptutorial.com/de/home 134
Kapitel 49: Netzwerkanfragen mit HTTP-API durchführen
Syntax
$ response = wp_remote_get ($ url, $ args);•$ response = wp_remote_post ($ url, $ args);•$ response = wp_safe_remote_post ($ url, $ args);•
Parameter
Parameter Einzelheiten
$ url (Zeichenfolge) (Erforderlich) Website-URL zum Abrufen.
$ args (Array) (Optional) Fordern Sie Argumente an.
Bemerkungen
Kehrt zurück
(WP_Error | array) Die Antwort als Array oder WP_Error bei einem Fehler.
Examples
Rufen Sie eine Remote-JSON-Ressource ab
Dieses Snippet holt eine JSON-formatierte Ressource, dekodiert sie und druckt sie im PHP-Array-Format.
// Fetch $response = wp_remote_get( 'http://www.example.com/resource.json' ); if ( ! is_wp_error( $response ) ) { $headers = wp_remote_retrieve_headers( $response ); if ( isset( $headers[ 'content-type' ] ) && 'application/json' === $headers[ 'content-type' ] ) { print_r( json_decode( wp_remote_retrieve_body( $response ) ) ); } }
Netzwerkanfragen mit HTTP-API durchführen online lesen: https://riptutorial.com/de/wordpress/topic/1116/netzwerkanfragen-mit-http-api-durchfuhren
https://riptutorial.com/de/home 135
Kapitel 50: Options-API
Einführung
Optionen sind Daten, die WordPress zum Speichern verschiedener Einstellungen und Konfigurationseinstellungen verwendet. Die Options-API ist eine einfache und standardisierte Methode zum Speichern von Daten in der Datenbank. Die API erleichtert das Erstellen, Aufrufen, Aktualisieren und Löschen von Optionen.
Syntax
// Neue Option in WordPress erstellen add_option ($ option, $ value =, $ deprecated =, $ autoload = 'yes');
•
// Entfernt eine Option aus der Datenbank. delete_option ($ option);
•
// Eine gespeicherte Option abrufen get_option ($ option, $ default = false);
•
// Aktualisieren Sie den Wert einer Option, die bereits hinzugefügt wurde. update_option ($ option, $ newvalue);
•
// Es gibt auch * _site_option () Versionen dieser Funktionen. // um netzweite Optionen in WordPress Multisite zu bearbeiten
•
// Neue Netzwerkoption erstellen add_site_option ($ option, $ value =, $ deprecated =, $ autoload = 'yes');
•
// Entfernt eine Netzwerkoption delete_site_option ($ option);
•
// Eine gespeicherte Netzwerkoption abrufen get_site_option ($ option, $ default = false);
•
// Aktualisieren Sie den Wert einer Option, die bereits hinzugefügt wurde. update_site_option ($ option, $ newvalue);
•
Bemerkungen
Die Options-API ist eine einfache und standardisierte Methode zum Arbeiten mit Daten, die in der Optionstabelle der MySQL-Datenbank enthalten sind. Die API erleichtert das Erstellen, Lesen, Aktualisieren und Löschen von Optionen.
Examples
https://riptutorial.com/de/home 136
get_option
Die Funktion get_option wird verwendet, um einen Wert aus der Optionstabelle basierend auf dem Optionsnamen abzurufen.
Sie können den folgenden Code verwenden, um die E-Mail-Adresse eines WordPress-Site-Administrators abzurufen.
<?php echo get_option('admin_email'); ?>
get_option() hat ein optionales get_option() Argument, mit dem Sie einen Standardwert festlegen können, der zurückgegeben wird, falls die angeforderte Option nicht festgelegt ist. Standardmäßig ist dieses Argument false .
Um eine Textzeichenfolge abzurufen und eine Zeichenfolge zu verwenden, wenn der Text nicht in der Optionstabelle festgelegt ist, können Sie Folgendes tun:
<?php get_option( 'my_text', "I don't have anything written. Yet." ); ?>
add_option
Die Funktion add_option dient zum Einfügen einer neuen Zeile in die Optionstabelle.
Dadurch wird eine neue Zeile in die Optionstabelle mit dem Optionsnamen some_option_name und dem Wert some_option_value eingefügt
<?php add_option( 'some_option_name', 'some_option_value' ); ?>
delete_option
Mit der Funktion delete_option können Sie eine Option aus der Optionstabelle löschen.
Dadurch wird my_custom_option aus der Optionstabelle gelöscht.
<?php delete_option( 'my_custom_option' ); ?>
update_option
Die Funktion update_option wird verwendet, um einen bereits in der Optionstabelle vorhandenen Wert zu aktualisieren. Wenn die Option nicht vorhanden ist, wird die Option mit dem Optionswert hinzugefügt.
Dadurch wird der Standardkommentarstatus auf "geschlossen" gesetzt:
update_option( 'default_comment_status', 'closed' );
Options-API online lesen: https://riptutorial.com/de/wordpress/topic/7854/options-api
https://riptutorial.com/de/home 137
Kapitel 51: Plugin-Entwicklung
Syntax
add_action (String $ tag, aufrufbare $ function_to_add, int $ Priorität = 10, int $ akzeptierte_args = 1)
•
add_filter (String $ tag, aufrufbare $ function_to_add, int $ Priorität = 10, int $ akzept_args = 1)
•
Parameter
Parameter Detail
$ tag(Zeichenfolge) (Erforderlich) Der Name des Filters, an den der $ function_to_add-Callback angehängt werden soll.
$ function_to_add
(aufrufbar) (Erforderlich) Der Rückruf, der ausgeführt werden soll, wenn der Filter angewendet wird.
$ Priorität
(int) (optional) Wird verwendet, um die Reihenfolge anzugeben, in der die einer bestimmten Aktion zugeordneten Funktionen ausgeführt werden. Niedrigere Zahlen entsprechen der früheren Ausführung, und Funktionen mit derselben Priorität werden in der Reihenfolge ausgeführt, in der sie der Aktion hinzugefügt wurden
$ Accepted_args
(int) (Optional) Die Anzahl der Argumente, die die Funktion akzeptiert. Standardwert: 1
Bemerkungen
Die Funktionsweise von Plugins besteht darin, dass WordPress zu verschiedenen Zeitpunkten während der Ausführung von WordPress prüft, ob Plugins registrierte Funktionen zu diesem Zeitpunkt ausgeführt haben. Wenn ja, werden die Funktionen ausgeführt. Diese Funktionen ändern das Standardverhalten von WordPress.
Es gibt zwei Arten von Haken:
Mit Filtern können Sie den Wert eines Datenelements während der Ausführung von WordPress ändern. Callback-Funktionen für Filter werden durch eine Variable geleitet, geändert und anschließend zurückgegeben. Sie sollen isoliert arbeiten und sollten sich nicht auf globale Variablen oder andere Faktoren außerhalb der Funktion auswirken.
Mit Aktionen können Sie dagegen die Arbeitsweise von WordPress erweitern oder ändern. Ihre Callback-Funktion wird an einem bestimmten Punkt in der Ausführung von WordPress ausgeführt
https://riptutorial.com/de/home 138
und kann Aufgaben ausführen, z. B. die Ausgabe an den Benutzer oder das Einfügen von Objekten in die Datenbank.
Filterreferenz
Aktionsreferenz
Handbuch
Plugin-API
Filter gegen Aktionen
Examples
Filter
add_filter('comment_text','before_comment'); add_filter('comment_text','after_comment'); function before_comment($comment_text){ return 'input before comment'.$comment_text; } function after_comment($comment_text){ return $comment_text.'input after comment'; }
Aktion
add_action('wp_head','hook_javascript'); function hook_javascript() { $output="<script> alert('Page is loading...'); </script>"; echo $output; }
Entwicklungsbeispiele für Plugins: Favorite Song Widget
<?php function wpshout_register_widgets() { register_widget( 'Favorite_Song_Widget'); } add_action( 'widgets_init', 'wpshout_register_widgets' ); class Favorite_Song_Widget extends WP_Widget { function Favorite_Song_Widget() { // Instantiate the parent object parent::__construct( 'favorite_song_widget', // Base ID __('Favorite Song', 'text_domain'), // Name array( 'description' => __( 'Widget for playable favorite song', 'text_domain' ), ) // Args
https://riptutorial.com/de/home 139
); } function widget( $args, $instance ) { echo $args['before_widget']; echo '<h3>Favorite Song Lists:</h3>'; echo $instance['songinfo']; echo '<a href="' . $instance['link'] . '">Download it</a><br>'; echo $instance['description']; echo $args['after_widget']; } function update($new_abc,$old_abc) { $instance = $old_abc; // Fields $instance['link'] = strip_tags($new_abc['link']); $instance['songinfo'] = strip_tags($new_abc['songinfo']); $instance['description'] = strip_tags($new_abc['description']); return $instance; } // Widget form creation function form($instance) { $link = ''; $songinfo = ''; $description = ''; // Check values if( $instance) { $link = esc_attr($instance['link']); $songinfo = esc_textarea($instance['songinfo']); $description = esc_textarea($instance['description']); } ?> <p> <label for="<?php echo $this->get_field_id('link'); ?>"><?php _e('Link', 'wp_widget_plugin'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('link'); ?>" name="<?php echo $this->get_field_name('link'); ?>" type="text" value="<?php echo $link; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('songinfo'); ?>"><?php _e('Song Info:', 'wp_widget_plugin'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('songinfo'); ?>" name="<?php echo $this->get_field_name('songinfo'); ?>" type="text" value="<?php echo $songinfo; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Description:', 'wp_widget_plugin'); ?></label> <textarea class="widefat" id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" type="text" value="<?php echo $description; ?>"></textarea> </p> <p><a href="#" id="add-more-tabs"><?php _e('Add More Tabs', 'wp_widget_plugin'); ?></a></p> <?php }
https://riptutorial.com/de/home 140
}
Plugin-Entwicklung online lesen: https://riptutorial.com/de/wordpress/topic/6108/plugin-entwicklung
https://riptutorial.com/de/home 141
Kapitel 52: Postformate
Bemerkungen
Die folgenden Postformate stehen Benutzern zur Auswahl zur Verfügung, wenn das Design sie unterstützt.
Beachten Sie, dass sich der tatsächliche Beitragseintrag nicht ändern kann. Das Design kann jedoch diese Benutzerauswahl verwenden, um den Beitrag je nach ausgewähltem Format unterschiedlich anzuzeigen. Beispielsweise könnte ein Thema die Anzeige des Titels für einen "Status" -Posten unterlassen. Wie die Dinge angezeigt werden, hängt vom Thema ab, aber hier sind einige allgemeine Richtlinien.
beiseite - Üblicherweise ohne Titel gestaltet. Ähnlich einem Facebook-Hinweis-Update.•Galerie - Eine Galerie von Bildern. Post enthält wahrscheinlich einen Kurzcode für die Galerie und enthält Bildanhänge.
•
link - Ein Link zu einer anderen Site. Möglicherweise möchten Themes den ersten Tag im Beitrag als externen Link für diesen Beitrag verwenden. Ein alternativer Ansatz könnte sein, wenn der Beitrag nur aus einer URL besteht, dann ist dies die URL, und der Titel (post_title) ist der Name, der dem Anker dafür angehängt ist.
•
Bild - Ein einzelnes Bild. Der erste Tag im Beitrag kann als Bild betrachtet werden. Wenn der Beitrag nur aus einer URL besteht, ist dies alternativ die Bild-URL und der Titel des Beitrags (post_title) das Titelattribut für das Bild.
•
quote - Ein Zitat. Wird wahrscheinlich eine Blockquote enthalten, die den Inhalt des Angebots enthält. Alternativ kann das Zitat nur der Inhalt sein, wobei die Quelle / der Autor der Titel ist.
•
status - Eine kurze Statusaktualisierung, ähnlich einer Statusaktualisierung von Twitter.•Video - Eine einzelne Video- oder Video-Wiedergabeliste. Das erste Tag oder Objekt / Einbettung im Postinhalt kann als Video betrachtet werden. Alternativ, wenn der Beitrag nur aus einer URL besteht, ist dies die Video-URL. Kann das Video auch als Anhang zum Beitrag enthalten, wenn die Video-Unterstützung im Blog aktiviert ist (z. B. über ein Plugin). Audio - Eine Audiodatei oder Wiedergabeliste. Könnte für Podcasting verwendet werden.
•
chat - Ein Chatprotokoll•
Examples
Hinzufügen eines Beitragstyps zum Thema
Postformate zu post_type 'page' hinzufügen
add_post_type_support( 'page', 'post-formats' );
Im nächsten Beispiel werden der benutzerdefinierte Beitragstyp "my_custom_post_type" registriert und Postformate hinzugefügt.
https://riptutorial.com/de/home 142
Registrieren Sie den benutzerdefinierten Beitragstyp "my_custom_post_type".
add_action( 'init', 'create_my_post_type' ); function create_my_post_type() { register_post_type( 'my_custom_post_type', array( 'labels' => array( 'name' => __( 'Products' ) ), 'public' => true ) ); }
Postformate zu post_type 'my_custom_post_type' hinzufügen
add_post_type_support( 'my_custom_post_type', 'post-formats' );
Oder fügen Sie in der Funktion register_post_type () "postformates" im Parameterfeld "support" hinzu. Das nächste Beispiel entspricht oben.
Registrieren Sie den benutzerdefinierten Beitragstyp "my_custom_post_type" mit dem Parameter "support"
add_action( 'init', 'create_my_post_type' ); function create_my_post_type() { register_post_type( 'my_custom_post_type', array( 'labels' => array( 'name' => __( 'Products' ) ), 'public' => true, 'supports' => array('title', 'editor', 'post-formats') ) ); }
Theme-Support für den Beitrag hinzufügen
Funktionsaufruf
add_theme_support( 'post-formats' )
Postformate online lesen: https://riptutorial.com/de/wordpress/topic/6075/postformate
https://riptutorial.com/de/home 143
Kapitel 53: REST-API
Einführung
Die WordPress-REST-API stellt API-Endpunkte für WordPress-Datentypen bereit, mit denen Entwickler mit Websites remote kommunizieren können, indem sie JSON-Objekte (JavaScript Object Notation) senden und empfangen.
Wenn Sie Inhalte an die API senden oder eine Anforderung an sie senden, wird die Antwort in JSON zurückgegeben. Auf diese Weise können Entwickler WordPress-Inhalte aus clientseitigem JavaScript oder aus externen Anwendungen erstellen, lesen und aktualisieren, auch wenn sie in anderen Sprachen als PHP geschrieben sind.
Bemerkungen
Damit dieses einfache WordPress-REST-API-Beispiel für Sie funktioniert, müssen Sie lernen, wie es ausführlicher funktioniert. Offizielle Dokumentation empfiehlt das Erlernen von:
Routen / Endpunkte - Dies sind Zuordnungen einzelner HTTP-Methoden zu Routen, die als "Endpunkte" bezeichnet werden. Sie tun dies mit der Funktion register_rest_route (). Hier finden Sie weitere Informationen zu Routen und Endpunkten .
1.
Anforderungen - Die WordPress-REST-API definiert die WP_REST_Request Klasse, die zum Speichern und Abrufen von Informationen für die aktuelle Anforderung verwendet wird. WP_REST_Request Objekte werden automatisch für Sie generiert, wenn Sie eine HTTP-Anforderung an eine registrierte Route WP_REST_Request . Die in der Anfrage angegebenen Daten bestimmen, welche Antwort Sie wieder aus der API erhalten. Hier erfahren Sie mehr über die Klasse WP_REST_Request .
2.
Antworten - sind die Daten, die Sie von der API erhalten. WP_REST_Response bietet eine Möglichkeit, mit den von Endpunkten zurückgegebenen WP_REST_Response zu interagieren. In Ihrer Endpunktdefinition benennen Sie die Callback-Funktion (Antwort), um Ihre Interaktion zu bedienen. Hier erfahren Sie mehr über die Klasse WP_REST_Response .
3.
Schema - Jeder Endpunkt erfordert und stellt geringfügig andere Datenstrukturen bereit. Diese Strukturen werden im API-Schema definiert. Wenn Sie wartbare, auffindbare und leicht erweiterbare Endpunkte wünschen, wird die Verwendung des Schemas empfohlen. Hier erfahren Sie mehr über das Schema .
4.
Controller-Klassen - sie bringen alle Elemente an einem Ort zusammen. Mit einer Controller-Klasse können Sie die Registrierung von Routen und Endpunkten verwalten, Anforderungen bearbeiten, Schema verwenden und API-Antworten generieren. Sie haben bereits zwei Controller-Klassen WP_REST_Request : WP_REST_Request und WP_REST_Response . Hier erfahren Sie mehr über die Controller-Klassen
5.
Hinweis: Einige dieser Informationen stammen aus dem offiziellen Wordpress-REST-APi-
https://riptutorial.com/de/home 144
Handbuch
Examples
Vollständiges Arbeitsbeispiel
add_action('rest_api_init', 'my_rest_validate_endpoint' ); function my_rest_validate_endpoint() { // Declare our namespace $namespace = 'myrest/v1'; // Register the route // Example URL matching this route: // http://yourdomain/wp-json/myrest/v1/guides/tag=europe/price=29 register_rest_route($namespace, // Using regular expressions we can initially validate the input '/guides/tag=(?P<tag>[a-zA-Z0-9-]+)/price=(?P<price>[0-9]+)', // We can have multiple endpoints for one route array( array( 'methods' => 'GET', 'callback' => 'my_get_guides_handler' ) ), // We can register our schema callback // 'schema' => 'my_get_guide_schema', ); // You can register another route here the same way } // The callback handler for the endpoint function my_get_guides_handler(WP_REST_Request $request) { // Get the parameters: $tag = $request->get_param('tag'); $price = $request->get_param('price'); // Do something with the parameters // for instance: get matching guides from the DB into an array - $results // ... // Prepare the response $message = "We've found " . count($results) . " guides "; $message .= "(searching for a tag: " . $tag . ", with a price tag: " . $price . ")"; // The response gets automatically converted into a JSON format return new WP_REST_Response( array( 'results' => $results, 'message' => $message, 'status' => 'OK' ), 200 );
https://riptutorial.com/de/home 145
}
REST-API online lesen: https://riptutorial.com/de/wordpress/topic/10645/rest-api
https://riptutorial.com/de/home 146
Kapitel 54: Seitenleisten
Syntax
register_sidebar ($ args)•get_sidebar (String $ name = null)•
Parameter
Parameter Einzelheiten
$ args(string | array) (Optional) Erstellt eine Seitenleiste basierend auf den name und id Werten
$ name* (Zeichenfolge) (Optional) Der Name der spezialisierten Seitenleiste. Standardwert: null
Bemerkungen
Argumentoptionen sind:
name - Name der Sidebar (Standard: lokalisierte 'Sidebar' und numerische ID) .•id - Sidebar id - Muss in Kleinbuchstaben ohne Leerzeichen angegeben werden (standardmäßig eine numerisch automatisch inkrementierte ID) . Wenn Sie den ID-Argumentwert nicht festlegen, erhalten Sie ab Version 4.2 im Debug-Modus E_USER_NOTICE Nachrichten.
•
description - Textbeschreibung, was / wo sich die Seitenleiste befindet. Wird auf dem Widget-Verwaltungsbildschirm angezeigt. (Seit 2.9) (Standard: leer)
•
class - CSS-Klasse, die der Sidebar auf der Admin-Seite Appearance -> Widget zugewiesen werden soll. Diese Klasse wird nur in der Quelle der WordPress Widget-Verwaltungsseite angezeigt. Es wird nicht in das Frontend Ihrer Website aufgenommen. Hinweis : Die sidebar wird dem Klassenwert vorangestellt. Zum Beispiel kann eine Klasse von tal führt in einem Klassenwert von sidebar-tal . (Standardeinstellung: leer) .
•
before_widget - HTML zu platzieren , bevor jedes Widget (Standard: <li id="%1$s" class="widget %2$s"> ) Hinweis: verwendet sprintf für Variablensubstitution
•
after_widget - HTML, der nach jedem Widget platziert werden soll (Standardeinstellung: </li>\n ) .
•
before_title - HTML, der vor jedem Titel platziert werden soll (Standard: <h2 class="widgettitle"> ) .
•
after_title - HTML, der hinter jedem Titel platziert werden soll (Standard: </h2>\n ) .•
Examples
https://riptutorial.com/de/home 147
Sidebars registrieren
In Ihrer functions.php Sie neue Seitenleisten mit diesem Code registrieren
/** * Registers sidebars * * @param array Array with default or specified array values * @since 1.0.0 */ if ( function_exists( 'register_sidebar' ) ) { register_sidebar( array ( 'name' => esc_html__( 'Primary Sidebar', 'mytheme'), 'id' => 'primary-widget-area', 'description' => esc_html__( 'The Primary Widget Area', 'mytheme'), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<div class="sidebar-widget-heading"><h3>', 'after_title' => '</h3></div>', ) ); register_sidebar( array ( 'name' => esc_html__( 'Secondary Sidebar', 'mytheme'), 'id' => 'secondary-widget-area', 'description' => esc_html__( 'The Secondary Widget Area', 'mytheme'), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<div class="sidebar-widget-heading"><h3>', 'after_title' => '</h3></div>', ) ); }
Sie können beliebig viele Seitenleisten hinzufügen.
Holen Sie sich die Sidebar
Sie können auch eine eigene Sidebar-Datei im Design erstellen, um sie für verschiedene Vorlagen aufzurufen. Kopiere sidebar.php des aktuellen Themes und ändere den Namen (zB sidebar-book.php)
In der Vorlage können Sie diese Seitenleiste mit get_sidebar('book') . Damit können Sie verschiedene Seitenleisten auf verschiedenen Seiten aufrufen.
Seitenleisten online lesen: https://riptutorial.com/de/wordpress/topic/6293/seitenleisten
https://riptutorial.com/de/home 148
Kapitel 55: Shortcode hinzufügen
Syntax
add_shortcode( $tag , $func );•
Parameter
Parameter Einzelheiten
$ tag(Zeichenfolge) (erforderlich) Shortcode-Tag, das im Post-Inhalt gesucht werden soll
$ func (aufrufbar) (erforderlich) Hook zum Ausführen, wenn Shortcode gefunden wird
Bemerkungen
Dem Shortcode-Callback werden drei Argumente übergeben: die Shortcode-Attribute, der Shortcode-Inhalt (falls vorhanden) und der Name des Shortcodes.
•
Für jeden Shortcode kann es nur einen Haken geben. Das bedeutet, dass ein anderes Plugin einen ähnlichen Shortcode überschreibt, oder das andere, je nachdem, in welcher Reihenfolge die Plugins enthalten sind und / oder ausgeführt werden.
•
Shortcode-Attributnamen werden immer in Kleinbuchstaben konvertiert, bevor sie an die Handlerfunktion übergeben werden. Werte sind unberührt.
•
Beachten Sie, dass die vom Shortcode aufgerufene Funktion niemals irgendeine Ausgabe erzeugen sollte. Shortcode-Funktionen sollten den Text zurückgeben, der zum Ersetzen des Shortcodes verwendet werden soll. Die direkte Ausgabe der Ausgabe führt zu unerwarteten Ergebnissen. Dies ist ähnlich wie das Verhalten von Filterfunktionen, da sie keine erwarteten Nebeneffekte aus dem Aufruf hervorrufen sollten, da Sie nicht steuern können, wann und von wo aus sie aufgerufen werden.
•
Examples
Einfacher Kurzcode für den letzten Beitrag
add_shortcode ist ein add_shortcode Schlüsselwort.
// recent-posts is going to be our shortcode. add_shortcode('recent-posts', 'recent_posts_function'); // This function is taking action when recent post shortcode is called. function recent_posts_function() { query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => 1)); if (have_posts()) : while (have_posts()) : the_post();
https://riptutorial.com/de/home 149
$return_string = '<a href="'.get_permalink().'">'.get_the_title().'</a>'; endwhile; endif; wp_reset_query(); return $return_string; }
Dieses Snippet kann in Ihrer Theme- functions.php .
[recent-posts] Dies ist der Shortcode für den letzten Post. Wir können diesen Shortcode im Backend anwenden (wie Seiten, Post, Widgets).
Wir können den gleichen Shortcode auch in unserem Code verwenden. mit Hilfe von do_shortcode . Z.B. echo do_shortcode( '[recent-posts]' );
Erweiterter Shortcode für aktuelle Beiträge
Diese Funktion verwendet Parameter für die Anzahl der letzten Beiträge, die Sie anzeigen möchten.
Bsp .: Sie möchten nur fünf aktuelle Beiträge anzeigen. Übergeben Sie einfach die Argumente mit posts = "5" (Sie können eine beliebige Anzahl der letzten Beiträge übergeben, die Sie anzeigen möchten).
Funktion holt nur fünf aktuelle Beiträge aus der Datenbank.
// recent-posts is going to be our shortcode. add_shortcode('recent-posts', 'recent_posts_function'); // Functions takes parameter such as posts="5". function recent_posts_function($atts){ extract(shortcode_atts(array( 'posts' => 1, ), $atts)); $return_string = '<ul>'; query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts)); if (have_posts()) : while (have_posts()) : the_post(); $return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; endwhile; endif; $return_string .= '</ul>'; wp_reset_query(); return $return_string; }
Z.B. echo do_shortcode( '[recent-posts posts="5"]' );
Shortcode hinzufügen online lesen: https://riptutorial.com/de/wordpress/topic/6580/shortcode-hinzufugen
https://riptutorial.com/de/home 150
Kapitel 56: Sicherheit in WordPress - Desinfektion
Syntax
sanitize_text_field (Zeichenfolge $ str)•sanitize_title (String $ title, String $ fallback_title, String $ context)•sanitize_email (String $ email)•sanitize_html_class (String $ class, String $ fallback)•sanitize_file_name (String $ name)•sanitize_user (string $ username, boolean $ strict)•
Bemerkungen
Sicherheit sollte bei der Entwicklung immer im Auge behalten werden. Ohne Sicherheit ist eine App offen für verschiedene Angriffe wie SQL-Injektionen, XSS, CSRF, RFI usw., die zu ernsthaften Problemen führen können.
Nicht vertrauenswürdige Daten stammen aus vielen Quellen (Benutzer, Websites Dritter, Ihrer eigenen Datenbank !,!) Und müssen sowohl bei der Eingabe als auch bei der Ausgabe überprüft werden. (Quelle: WordPress-Codex)
Die Daten sollten je nach Verwendung und Zweck validiert, desinfiziert oder entzogen werden.
Validieren bedeutet, sicherzustellen, dass die von Ihnen angeforderten Daten mit den übermittelten Daten übereinstimmen. (Quelle: WordPress-Codex)
Die Bereinigung ist etwas liberaler als ein Ansatz, Benutzerdaten zu akzeptieren. Wir können auf diese Methoden zurückgreifen, wenn es eine Reihe von akzeptablen Eingaben gibt. (Quelle: Wordpress-Codex)
Flucht bedeutet, die Daten, die Sie möglicherweise bereits haben, zu übernehmen und sie vor dem Rendern für den Endbenutzer abzusichern. (Quelle: WordPress-Codex)
Examples
Textfeld desinfizieren
$title = sanitize_text_field( $_POST['title'] );
Titel desinfizieren
Der zurückgegebene Wert ist für die Verwendung in einer URL und nicht als von Menschen lesbarer Titel geeignet. Verwenden Sie stattdessen sanitize_text_field.
https://riptutorial.com/de/home 151
$new_url = sanitize_title($title);
E-Mail bereinigen
$sanitized_email = sanitize_email(' [email protected]! ');
HTML-Klasse desinfizieren
$post_class = sanitize_html_class( $post->post_title ); echo '<div class="' . $post_class . '">';
Bereinigen Sie den Dateinamen
$incfile = sanitize_file_name($_REQUEST["file"]); include($incfile . ".php");
Ohne den Dateinamen zu bereinigen, kann ein Angreifer einfach http: // attacker_site / malicous_page als Eingabe übergeben und den Code auf Ihrem Server ausführen.
Bereinigen Sie den Benutzernamen
$user = sanitize_user("attacker username<script>console.log(document.cookie)</script>");
$ user value nach der Bereinigung ist "Angreifer-Benutzername"
Sicherheit in WordPress - Desinfektion online lesen: https://riptutorial.com/de/wordpress/topic/6348/sicherheit-in-wordpress---desinfektion
https://riptutorial.com/de/home 152
Kapitel 57: Sicherheit in WordPress - Flucht
Syntax
esc_html (String $ text)•esc_url (String $ url, Array $ -Protokolle, String $ _context)•esc_js (String $ text)•wp_json_encode (gemischte $ data, int $ options, int $ depth = 512)•esc_attr (String $ text)•esc_textarea (Zeichenfolge $ text)•
Bemerkungen
Sicherheit sollte bei der Entwicklung immer im Auge behalten werden. Ohne Sicherheit ist eine App offen für verschiedene Angriffe wie SQL-Injektionen, XSS, CSRF, RFI usw., die zu ernsthaften Problemen führen können.
Nicht vertrauenswürdige Daten stammen aus vielen Quellen (Benutzer, Websites Dritter, Ihrer eigenen Datenbank !,!) Und müssen sowohl bei der Eingabe als auch bei der Ausgabe überprüft werden. (Quelle: WordPress-Kodex)
Die Daten sollten je nach Verwendung und Zweck validiert, desinfiziert oder entzogen werden.
Validieren bedeutet, sicherzustellen, dass die von Ihnen angeforderten Daten mit den übermittelten Daten übereinstimmen. (Quelle: WordPress-Kodex)
Die Bereinigung ist etwas liberaler als ein Ansatz, Benutzerdaten zu akzeptieren. Wir können auf diese Methoden zurückgreifen, wenn es eine Reihe von akzeptablen Eingaben gibt. (Quelle: WordPress-Kodex)
Flucht bedeutet, die Daten, die Sie möglicherweise bereits haben, zu übernehmen und sie vor dem Rendern für den Endbenutzer abzusichern. (Quelle: WordPress-Kodex)
Examples
Escape-Daten im HTML-Code
Esc_html sollte immer dann verwendet werden, wenn wir Daten im HTML-Code ausgeben.
<h4><?php echo esc_html( $title ); ?></h4>
einer URL entkommen
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
https://riptutorial.com/de/home 153
<img src="<?php echo esc_url( $user_picture_url ); ?>" />
Escape-Daten in js-Code
esc_js() soll innerhalb eines Tag-Attributs für Inline-JS verwendet werden.
Für Daten innerhalb eines <script> -Tags verwenden Sie wp_json_encode() .
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode() kodiert eine Variable in JSON, wobei einige Überprüfungen durchgeführt werden.
Beachten Sie, dass wp_json_encode() die wp_json_encode() Anführungszeichen automatisch enthält.
<?php $book = array( "title" => "JavaScript: The Definitive Guide", "author" => "Stack Overflow", ); ?> <script type="text/javascript"> var book = <?php echo wp_json_encode($book) ?>; /* var book = { "title": "Security in WordPress", "author" => "Stack Overflow", }; */ </script>
oder
<script type="text/javascript"> var title = <?php echo wp_json_encode( $title ); ?>; var content = <?php echo wp_json_encode( $content ); ?>; var comment_count = <?php echo wp_json_encode( $comment_count ); ?>; </script>
Escape-Attribute
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
Escape-Daten im Textbereich
<textarea><?php echo esc_textarea( $text ); ?></textarea>
Sicherheit in WordPress - Flucht online lesen: https://riptutorial.com/de/wordpress/topic/6115/sicherheit-in-wordpress---flucht
https://riptutorial.com/de/home 154
Kapitel 58: Sichern Sie Ihre Installation
Bemerkungen
WordPress-Websites werden häufig gehackt. In diesem Thema werden Techniken und Verfahren beschrieben, mit denen die Sicherheit Ihrer WordPress-Installation über das hinausgeht, was bei einer Basisinstallation erreicht wird.
Abgesehen von diesem Thema ist die Hardening WordPress Codex-Seite ein weiterer guter Ort, um zu erfahren, wie Sie eine WordPress-Installation sichern.
Examples
Deaktivieren Sie den Datei-Editor
Der mit WordPress gelieferte Datei-Editor ist ein Sicherheitsrisiko. Wenn ein Angreifer Administratorzugriff auf Ihre WordPress-Website erhält, kann er leicht Schadcode in Motiv- und Plugin-Dateien einfügen. Es ist auch ein Risiko für Kunden, die nicht wissen, was sie tun. Wenn der Doppelpunkt im Datei-Editor falsch platziert ist, kann er eine Website beschädigen und sie vom Browser aus nicht zugänglich machen.
Deaktivieren Sie in Ihrer WordPress wp-config.php Datei " wp-config.php den Datei-Editor, indem Sie die folgende Codezeile hinzufügen.
define( 'DISALLOW_FILE_EDIT', true );
Diese Linie wird die gewünschte Wirkung hat , wenn zu Ihrem Thema in dem Nachspiel functions.php zu Datei , aber es ist besser, hinzuzufügen wp-config.php .
Wenn Sie WordPress CLI zur Installation von WordPress verwenden, können Sie den folgenden Befehl zum Erstellen einer Datei wp-config.php mit deaktivierter Dateibearbeitung verwenden.
/* declare variables beforehand or substitute strings in */ wp core config --dbname="$MYSQL_DBNAME" --dbuser="$MYSQL_USERNAME" --dbpass="$MYSQL_PASS" --dbprefix="$WP_DBPREFIX"_ --locale=en_AU --extra-php <<PHP define( 'DISALLOW_FILE_EDIT', true ); PHP
Diese Methode ist nützlich, wenn Sie WordPress mit einem Skript installieren.
Verschiebe wp-config.php
Die vertraulichsten Informationen einer WordPress-Installation werden in der Datei wp-config.php gespeichert. Wenn ein Hacker Zugriff auf diese Datei erhält, hat er die vollständige Kontrolle über Ihre Website.
https://riptutorial.com/de/home 155
Standardmäßig ist wp-config.php im WordPress-Installationsordner gespeichert. Um das Stehlen dieser Datei zu erschweren, können Sie sie aus dem Webordner verschieben. Wenn Sie nur einen Ordner darüber verschieben, findet WordPress ihn automatisch. Wenn Sie wp-config.php an einen anderen Speicherort verschieben, erstellen wp-config.php im WordPress-Installationsordner eine leere Datei mit dem Namen wp-config.php . Dann füge folgendes hinzu:
define('ABSPATH', dirname(__FILE__) . '/'); // '../../wp-config.php' defines location two folders above installation folder. // Substitute with actual location of wp-config.php file as necessary. require_once(ABSPATH . '../../wp-config.php');
Möglicherweise müssen Sie php in dem Ordner, in dem Sie die Datei wp-config.php ablegen, ausführbar machen. Sie sollten php in so wenigen Ordnern wie möglich ausführen. Ein gutes System setzt die WordPress-Installation in /path/to/wordpress/install/ und die config in /path/to/wordpress/config . Stellen Sie sicher, dass der Konfigurationsordner nicht über das Internet erreichbar ist, und platzieren Sie keine anderen vertraulichen Informationen in /path/to/ oder höher in der Ordnerhierarchie. In diesem Fall schreiben Sie eine Zeile ähnlich der folgenden in Ihre php.ini :
open_basedir = "/path/to/wordpress/install/;/path/to/wordpress/config"
Diese Technik ist umstritten und einige Leute glauben nicht, dass sie die Sicherheit erhöht. Ausführliche Informationen zu diesem Thema finden Sie unter dieser WordPress StackExchange-Frage .
Legen Sie ein benutzerdefiniertes Präfix für WordPress-Tabellen fest
Wenn Sie WordPress auf Ihrem Server installieren, wird das Installationsskript vor allen WordPress MySQL-Tabellennamen mit einem Präfix versehen. Dieses Präfix ist standardmäßig auf 'wp_' gesetzt. Die WordPress-Posts-Tabelle wird beispielsweise als " wp_posts . Durch das Ändern des Tabellenpräfixes können Sie Sicherheit durch Unschärfe schaffen. Wenn ein Hacker SQL-Injection-Angriffe versucht, muss er auf diese Weise das Präfix Ihrer Tabelle erraten und nicht nur "wp_" verwenden. Sie können dieses Präfix beliebig einstellen.
Präfix in der neuen WordPress-Installation festlegen
Wenn Sie eine bekannte 5-Minuten-Installation verwenden, ändern Sie das Präfix während der Installation im Feld.
https://riptutorial.com/de/home 156
Bei der Installation über WordPress-CLI verwenden Sie den folgenden Befehl:
// set other variables above, or substitute your strings in. WP_DBPREFIX=foo wp core config --dbname="$MYSQL_DBNAME" --dbuser="$MYSQL_USERNAME" --dbpass="$MYSQL_PASS" --dbprefix="$WP_DBPREFIX"_ --locale=en_AU
Ändern Sie das Präfix in der vorhandenen Installation
Das Ändern des Präfixes ist etwas schwieriger. Verwenden Sie zunächst ein FTP-Programm wie FileZilla, um die Datei wp-config.php zu bearbeiten. Ändern Sie den Eintrag $table_prefix = 'wp_'; zu $table_prefix = 'foo_'; Ersetzen Sie "foo" für Ihr gewünschtes Präfix.
Als nächstes müssen wir die Datenbank bearbeiten. Wenn Sie Zugriff auf phpMyAdmin haben, melden Sie sich an und führen Sie folgende Schritte aus:
Wählen Sie die WordPress-Datenbank aus •
https://riptutorial.com/de/home 157
Wählen Sie alle Tabellen aus und wählen Sie in der Dropdown-Liste das Tabellenpräfix
ersetzen aus.
•
In "Von" geben Sie "wp_" ein. Geben Sie unter "An" Ihr Präfix ein, in diesem Beispiel "foo_", und drücken Sie "Senden".
•
Tabellen sollten jetzt so aussehen: •
https://riptutorial.com/de/home 158
Wenn Sie phpMyAdmin nicht verwenden können, verwenden Sie den folgenden MySQL-Befehl:
RENAME table `wp_comments` TO `foo_comments`
Sie müssen diesen Befehl für jede Tabelle ausführen und die anderen Tabellennamen durch "Kommentare" ersetzen.
Als nächstes müssen wir einige Einträge in einigen Tabellen ändern. Führen Sie diese Abfrage für die Tabelle 'foo_options' aus
SELECT * FROM foo_options WHERE option_name LIKE '%user_roles%'
Ein Eintrag mit option_name von 'wp_user_roles' sollte erscheinen. Ändern Sie in diesem Eintrag den Eintrag 'option_name' von wp_user_roles in foo_user_roles .
Dann öffne die 'foo_usermeta' Tabelle und finde jeden Eintrag mit 'wp_' an der Vorderseite.
und ändern Sie es in 'foo_'. Die Anzahl der Einträge, die Sie ändern müssen, hängt davon ab, wie viele Benutzer Sie haben.
https://riptutorial.com/de/home 159
Das sollte alles sein, um das Präfix in einer vorhandenen Installation zu ändern
Sichern Sie Ihre Installation online lesen: https://riptutorial.com/de/wordpress/topic/7594/sichern-sie-ihre-installation
https://riptutorial.com/de/home 160
Kapitel 59: Standortmigration
Syntax
OLD_SITE - Die alte Site, die migriert wird (zB: http: // localhost / example)•NEW_SITE - Die neue Website, zu der migriert werden soll (zB: https://example.com)•
Examples
Aktualisieren der Tabellen mit einer neuen URL
UPDATE wp_options SET option_value = replace(option_value, 'OLD_SITE, 'NEW_SITE') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'OLD_SITE','NEW_SITE'); UPDATE wp_posts SET post_content = replace(post_content, 'OLD_SITE', 'NEW_SITE');
Standortmigration online lesen: https://riptutorial.com/de/wordpress/topic/9610/standortmigration
https://riptutorial.com/de/home 161
Kapitel 60: Taxonomien
Syntax
register_taxonomy ($ taxonomy, $ object_type, $ args);•
Parameter
Parameter Einzelheiten
$ Taxonomie
(Zeichenfolge) (erforderlich) Der Name der Taxonomie. Der Name sollte nur Kleinbuchstaben und den Unterstrich enthalten und darf nicht länger als 32 Zeichen sein (Einschränkung der Datenbankstruktur).
$ object_type
(array / string) (erforderlich) Name des Objekttyps für das Taxonomieobjekt. Objekttypen können eingebaute Posttypen oder beliebige benutzerdefinierte Posttypen sein, die möglicherweise registriert sind.
$ args (array / string) (optional) Ein Array von Argumenten.
Examples
Beispiel für die Registrierung einer Taxonomie für Genres
<?php // hook into the init action and call create_book_taxonomies when it fires add_action( 'init', 'create_book_taxonomies', 0 ); // create taxonomy genres for the post type "book" function create_book_taxonomies() { // Add new taxonomy, make it hierarchical (like categories) $labels = array( 'name' => _x( 'Genres', 'taxonomy general name' ), 'singular_name' => _x( 'Genre', 'taxonomy singular name' ), 'search_items' => __( 'Search Genres' ), 'all_items' => __( 'All Genres' ), 'parent_item' => __( 'Parent Genre' ), 'parent_item_colon' => __( 'Parent Genre:' ), 'edit_item' => __( 'Edit Genre' ), 'update_item' => __( 'Update Genre' ), 'add_new_item' => __( 'Add New Genre' ), 'new_item_name' => __( 'New Genre Name' ), 'menu_name' => __( 'Genre' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true,
https://riptutorial.com/de/home 162
'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'genre' ), ); register_taxonomy( 'genre', array( 'book' ), $args ); } ?>
Sie können benutzerdefinierte Taxonomien in der Vorlagendatei functions.php eines Themas definieren:
Kategorie auf Seite hinzufügen
Sie können dieselbe benutzerdefinierte Taxonomie auch in die Beitragstypseite einfügen, indem Sie den folgenden Code verwenden.
function add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'genre', 'page' ); } add_action( 'init', 'add_taxonomies_to_pages' );
Fügen Sie obigen Code in die Datei functions.php Ihres Themas ein. Auf post_tag Art und Weise können Sie benutzerdefinierte post_tag Post- post_tag Seite hinzufügen.
Um Seiten mit benutzerdefinierten Taxonomie-Abfragen abzurufen, müssen Sie in derselben Datei den folgenden Code hinzufügen.
if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) { $my_post_array = array('page'); if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_post_array ); }
Fügen Sie Kategorien und Tags Seiten hinzu und fügen Sie sie als Klasse ein
// add tags and categories to pages function add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'post_tag', 'page' ); register_taxonomy_for_object_type( 'category', 'page' ); } add_action( 'init', 'add_taxonomies_to_pages' ); if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) { $my_post_array = array('post','page');
https://riptutorial.com/de/home 163
if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_post_array ); if ( $wp_query->get( 'tag' ) ) $wp_query->set( 'post_type', $my_post_array ); } // add tags and categorys as class to <body> function add_categories_and_tags( $classes = '' ) { if( is_page() ) { $categories = get_the_category(); foreach( $categories as $category ) { $classes[] = 'category-'.$category->slug; } $tags = get_the_tags(); foreach( $tags as $tag ) { $classes[] = 'tag-'.$tag->slug; } } return $classes; } add_filter( 'body_class', 'add_categories_and_tags' );
Fügen Sie Kategorien und Tags Seiten hinzu und fügen Sie sie als Klasse ein
Sie können diesen Code zu Ihrer benutzerdefinierten Datei "functions.php" hinzufügen:
// add tags and categories to pages function add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'post_tag', 'page' ); register_taxonomy_for_object_type( 'category', 'page' ); } add_action( 'init', 'add_taxonomies_to_pages' ); if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) { $my_post_array = array('post','page'); if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_post_array ); if ( $wp_query->get( 'tag' ) ) $wp_query->set( 'post_type', $my_post_array ); } // add tags and categorys as class to <body> function add_categories_and_tags( $classes = '' ) { if( is_page() ) { $categories = get_the_category(); foreach( $categories as $category ) { $classes[] = 'category-'.$category->slug;
https://riptutorial.com/de/home 164
} $tags = get_the_tags(); foreach( $tags as $tag ) { $classes[] = 'tag-'.$tag->slug; } } return $classes; } add_filter( 'body_class', 'add_categories_and_tags' );
Funktioniert perfekt, getestet in WordPress 4.8
Taxonomien online lesen: https://riptutorial.com/de/wordpress/topic/5943/taxonomien
https://riptutorial.com/de/home 165
Kapitel 61: template_include
Parameter
Parameter Erläuterung
$template
Übergibt einen Filter an den Filter. $template ist der aktuelle Pfad zur entsprechenden Datei für den Beitragstyp, wie er im aktiven untergeordneten Thema oder im übergeordneten Thema gefunden wird (wenn kein untergeordnetes Thema oder untergeordnetes Thema über niedrigere Vorlagen verfügt. Siehe Wordpress-Vorlagenhierarchie.) für mehr Details).
Bemerkungen
Sie müssen $template auch dann zurückgeben, wenn Sie sie nicht ändern. Wenn dies Sie verwirrt, schauen Sie sich Beispiele an, in denen apply_filter() im Code verwendet wurde
Sie sollten hier keine Variablen für die spätere Verwendung einrichten, dafür gibt es bessere Haken.
Ein nützlicher Programmablauf für diesen Filter ist:
Check $template beinhaltet unseren benutzerdefinierten Beitragstypnamen -> Vorlagenhierarchie !!
1.
Wenn nicht, suchen Sie in unserem Plugin nach geeigneten Dateien -> Es ist besser, auf bestimmte Dateien zu verweisen, anstatt Ordner nach Dateien zu durchsuchen. Effizienter. Aber ganz dem Entwickler überlassen.
2.
Schicke die Vorlage zurück.3.
Examples
Einfaches Beispiel
Dieser Filter ist sehr nützlich. Ein häufiges Problem für Entwickler ist das Einbinden von Vorlagen in von ihnen entwickelte Plugins.
Der Filter wird sofort angewendet, nachdem WordPress die entsprechende Vorlage im aktiven Child / Parent-Design mithilfe der WP-Hierarchie gefunden hat.
Achten Sie darauf, zu definieren, wann Sie den Vorlagenpfad ändern möchten. Im folgenden Beispiel prüft der Code, ob die aktuelle Seite die Einzelansicht unseres benutzerdefinierten Beitragstyps " cpt .
Ein einfaches Beispiel zum Einstieg!
https://riptutorial.com/de/home 166
add_filter('template_include', 'custom_function'); function custom_function($template){ //change a single post template... if( is_singular('cpt') ){ $template= 'path/to/another/template_file'; } return $template; }
Mehr Adv Beispiel
add_filter('template_include', 'custom_function'); function custom_function($template){ /* * This example is a little more advanced. * It will check to see if $template contains our post-type in the path. * If it does, the theme contains a high level template e.g. single-cpt.php * If not we look in the plugin parent folder for the file. e.g. single-cpt.php */ //check to see if the post type is in the filename (high priority file) //return template if it is! global $post; if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){ return $template; } $plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here... if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php') ){ $template= $plugin_path.'/single-'.$post->post_type.'.php'; } elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) { $template= $plugin_path.'/archive-'.$post->post_type.'.php'; } return $template; }
template_include online lesen: https://riptutorial.com/de/wordpress/topic/1439/template-include
https://riptutorial.com/de/home 167
Kapitel 62: Themes
Einführung
WordPress-Themes sind das Frontend Ihrer Website. Sie sehen die Leute, wenn sie die Site besuchen. Es gibt Tausende von Themen zur Auswahl, kostenpflichtige und kostenlose Versionen. Sie können sogar ein eigenes benutzerdefiniertes Design mit nur wenigen erforderlichen Dateien erstellen.
Examples
WordPress-Themes
Wie wählt man ein Thema aus?
Jede WordPress-Installation enthält ein vorinstalliertes Design. Sie verwalten Ihre Designs über das Dashboard. Gehen Sie zu Darstellung> Designs, um die Designs zu installieren, in der Vorschau anzuzeigen, zu löschen, zu aktivieren und zu aktualisieren. Das aktuelle Thema befindet sich in der oberen linken Ecke dieses Menüs.
Wenn Sie den Mauszeiger über das Motiv bewegen, wird die Schaltfläche "Motivdetails" angezeigt. Diese Schaltfläche enthält Informationen zum Thema, z. B. Version und Beschreibung. Wenn Sie auf das aktuelle Motivbild klicken, können Sie bestimmte Themeneinstellungen wie den Titel anpassen.
Update verfügbar
Wenn Updates für installierte Designs verfügbar sind, erhalten Sie eine Meldung, die Sie darüber informiert, dass eine neue Version verfügbar ist. Sie sollten jetzt die neuen Versionsdetails anzeigen oder aktualisieren können.
Versionsdetails anzeigen
Wenn Sie auf den Link Versionsdetails klicken, gelangen Sie zu einer Seite aus dem WordPress Theme Directory. Hier finden Sie die Details für die Upgrade-Version.
•
Jetzt aktualisieren
Wenn Sie auf den Link "Update jetzt" klicken, wird das Design-Upgrade installiert. Designs können auch über den Bildschirm Administration> Dashboard> Updates aktualisiert werden.
•
Neben dem aktuellen Thema werden auf dem Bildschirm zum Verwalten von Designs auch die anderen Designs angezeigt, die installiert sind, aber derzeit inaktiv sind. Jedes Theme wird durch einen kleinen Screenshot dargestellt. Wenn Sie den Mauszeiger über diese Bilder bewegen, werden die Schaltflächen "Motivdetails", "Aktivieren" und "Live-Vorschau" angezeigt. Sie können
https://riptutorial.com/de/home 168
auch inaktive Themen von dieser Seite aus aktualisieren oder löschen. Auf jeder Seite dieses Bildschirms werden bis zu 15 Theme-Screenshots gleichzeitig angezeigt.
aktivieren Sie
Durch Klicken auf diesen Link wird dies zum aktuellen Thema.
•
Live Vorschau
Wenn Sie auf diesen Link klicken, wird eine Vorschau des Blogs mit dieser bestimmten Designversion angezeigt.
•
Löschen
Wenn Sie auf diesen Link klicken, wird dieses Design vollständig gelöscht, einschließlich aller Designdateien und -ordner. Alles, was nicht gesichert ist, geht für immer verloren.
•
Update verfügbar
Siehe den Abschnitt Update verfügbar.
•
Installieren Sie Themes
Nachfolgend finden Sie mehrere Möglichkeiten, Themes zu installieren:
Automatisiertes Design-Installationsprogramm
Dies kann verwendet werden, um Designs aus dem WordPress-Theme-Verzeichnis zu installieren. Wechseln Sie zu Verwaltung> Darstellung> Designs, um den Bildschirm Erscheinungsbilder zu finden. Klicken Sie auf die Schaltfläche Neu hinzufügen. Von hier aus findest du zu verwendende Themen, die frei von Änderungen sind. Am oberen Rand dieses Bildschirms gibt es eine Suchfunktion mit drei verfügbaren Methoden, um ein neues Thema zu finden. Filter-, Schlüsselwort- und Attributsuche.
•
Verwenden der Upload-Methode
Die Upload-Methode installiert ein Design über eine ZIP-Datei. Alle Designs im WordPress-Theme-Verzeichnis können auf diese Weise installiert werden. Besuchen Sie nach dem Herunterladen der ZIP-Datei Administration> Darstellung> Designs und klicken Sie auf die Schaltfläche Neu hinzufügen. Klicken Sie anschließend auf den Link "Design hochladen". Suchen Sie nach der ZIP-Datei und klicken Sie auf Jetzt installieren. Um das aktuelle Design fertigzustellen, klicken Sie auf den Link Aktivieren.
•
Verwenden der FTP-Methode
Um ein Theme mit der FTP-Methode zu installieren, müssen Sie zunächst die Theme-Dateien auf Ihren lokalen Computer herunterladen. Extrahieren Sie den Inhalt der ZIP-Datei, wobei die Dateistruktur beibehalten wird, und fügen Sie sie einem neuen Ordner hinzu. Wenn Sie Anweisungen vom Theme-Autor erhalten, befolgen Sie diese unbedingt.
•
https://riptutorial.com/de/home 169
Verwenden Sie einen FTP-Client, um auf den Webserver Ihrer Site zuzugreifen. Fügen Sie die hochgeladenen Theme-Dateien Ihrem von WordPress bereitgestellten Verzeichnis wp-content / themes hinzu. Erstellen Sie ggf. einen Ordner, der Ihr neues Design im Verzeichnis wp-content / themes enthält. Ein Beispiel dafür wäre, wenn Ihr Theme "Test" heißt, sollte es in "wp-content / themes / test" leben.
Gehen Sie zu Administration> Darstellung> Designs und klicken Sie auf den Link Aktivieren, und wählen Sie das Design als aktuelles Design aus.
Mit cPanel installieren
cPanel Control Panels bieten eine weitere Methode zum Installieren von Themes mit ZIP- oder GZ-Dateien. Wechseln Sie im cPanel Manager zu WordPress, wenn WordPress installiert ist. Der Pfad würde ähnlich aussehen wie 'public_html / wp-content / themes'. Klicken Sie auf Datei hochladen und laden Sie die ZIP-Datei hoch. Wählen Sie die ZIP-Datei in cPanel aus und klicken Sie rechts im Fenster auf Dateiinhalte extrahieren, um die Datei zu dekomprimieren.
Gehen Sie zu Administration> Darstellung> Designs und klicken Sie auf den Link Aktivieren, und wählen Sie das Design als aktuelles Design aus.
•
Alle oben aufgeführten Informationen entsprechen dem WordPress-Codex. Es wurde der Kürze halber gekürzt. Das ursprüngliche Quellmaterial finden Sie hier . Weitere Informationen finden Sie unter codex.wordpress.org .
Erstellen eines benutzerdefinierten Designs
Diese Anweisungen erstellen ein sehr einfaches, mit Mindeststandards kompatibles WordPress-Theme.
Der erste Schritt ist das Erstellen eines neuen Designordners in Ihrem WordPress-Themerverzeichnis. Der richtige Pfad lautet:> wp-content> themes> Um ein gültiges Design zu erstellen, benötigen WordPress-Themes mindestens diese beiden Dateien:
index.php•
style.css•
Ihr Stylesheet sollte einen Kommentar enthalten, der WordPress darauf hinweist, dass hier ein Design vorhanden ist.
/* Theme Name: <theme name> Author: <author name> Description: <description goes here> Version: <theme version #> Tags: <tag to id theme> */
Ihr Design wurde erstellt. Gehen Sie zum WordPress-Dashboard und klicken Sie auf Darstellung>
https://riptutorial.com/de/home 170
Designs, um es zu aktivieren.
Themes online lesen: https://riptutorial.com/de/wordpress/topic/8967/themes
https://riptutorial.com/de/home 171
Kapitel 63: Version von Wordpress und Stylesheets entfernen
Einführung
Um es anderen zu erschweren, Ihre Website zu hacken, können Sie die WordPress-Versionsnummer von Ihrer Website, Ihren CSS und JS entfernen. Ohne diese Nummer ist es nicht möglich zu sehen, ob Sie nicht die aktuelle Version ausführen, um Fehler aus älteren Versionen auszunutzen.
Darüber hinaus kann die Ladegeschwindigkeit Ihrer Website verbessert werden, da die css- und js-Dateien ohne Abfragezeichenfolgen in der URL zwischengespeichert werden können.
Syntax
add_filter ($ tag, $ function_to_add, $ Priorität, $ akzeptierte_args)•
Parameter
Parameter Einzelheiten
$ tag(Zeichenfolge erforderlich) Name des Filters, mit dem $ function_to_add verbunden ist
$ function_to_add
(aufrufbar erforderlich) Name der Funktion, die ausgeführt wird, wenn der Filter angewendet wird
$ Priorität(int optional) Platz von $ function_to_add zwischen anderen Funktionen in einer Aktion (Standard = 10)
$ Accepted_args(int optional) Anzahl der Parameter, die $ function_to_add akzeptiert (Standard = 1)
Bemerkungen
Soll die Geschwindigkeit und Sicherheit der Website verbessern.
Examples
Entfernen Sie die Versionsnummern von css / js
Fügen Sie diese Funktion einfach zu Ihrer functions.php hinzu. Es entfernt die Version aus allen in
https://riptutorial.com/de/home 172
die Warteschlange gestellten Js- und CSS-Dateien.
function remove_cssjs_ver( $src ) { if( strpos( $src, '?ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; } add_filter( 'style_loader_src', 'remove_cssjs_ver', 999 ); add_filter( 'script_loader_src', 'remove_cssjs_ver', 999 );
Versionsnummern aus WordPress entfernen
Wenn Sie dies zu Ihrer functions.php hinzufügen, wird die WordPress-Versionsnummer aus dem RSS-Feed und dem Header entfernt.
function remove_wordpress_ver() { return ''; } add_filter('the_generator', 'remove_wordpress_ver', 999);
Version von Wordpress und Stylesheets entfernen online lesen: https://riptutorial.com/de/wordpress/topic/6218/version-von-wordpress-und-stylesheets-entfernen
https://riptutorial.com/de/home 173
Kapitel 64: Vorlage für benutzerdefinierten Beitragstyp erstellen
Examples
Erstellen einer benutzerdefinierten Vorlage für das Buch "Benutzerdefiniertes Post"
Um eine Vorlage für die einzelnen Posts unseres benutzerdefinierten Posts erstellen zu können, müssen Sie eine Datei mit dem Namen single- post_type_name .php erstellen, wobei post_type_name der Name unseres benutzerdefinierten Posts ist.
Zum Beispiel wird , wenn unser eigene Post - Typ „Bücher“ genannt, müssen wir eine PHP - Datei mit dem Namen Single Buch .php erstellen. Beachten Sie, dass wir den eindeutigen Namen unseres benutzerdefinierten Beitragstyps verwendet haben.
Kopieren Sie den Inhalt der Datei "single.php" aus dem Ordner "themes", fügen Sie ihn in die neue Vorlage ein und speichern Sie sie. Anschließend wird die Vorlage auf die individuelle Seite des benutzerdefinierten Beitragstyps angewendet.
Benutzerdefinierte Beitragstypvorlagen
Benutzerdefiniertes Beitragstyp-Archiv:
Um eine has_archive für einen benutzerdefinierten Beitragstyp zu erstellen, müssen Sie das Argument has_archive in Ihrer Funktion register_post_type() auf true . Im folgenden Beispiel wird ein benutzerdefinierter Beitragstyp für einen Ereignisbeitragstyp erstellt.
add_action( 'init', 'create_events_post_type' ); function create_events_post_type() { register_post_type( 'event', array( 'labels' => array( 'name' => __( 'Events' ), 'singular_name' => __( 'Event' ) ), 'public' => true, 'has_archive' => true, ) ); }
Um eine Vorlage für neue benutzerdefinierte Beitragstypen zu erstellen, müssen Sie eine neue Vorlagendatei erstellen. Um eine Vorlage für die einzelnen single-{post_type}.php zu erstellen, würden Sie sie als single-{post_type}.php und archive-{post_type}.php für das Archiv bezeichnen.
https://riptutorial.com/de/home 174
Der Dateiname für unsere archive-event.php und für die Ereignisseite wäre es single-event.php . Beide Dateien sollten sich im Stammverzeichnis des Designs befinden.
Ein Beispiel für eine Archivvorlage würde so aussehen. Aus dem 20-jährigen Thema gezogen .
<?php /** * The template for displaying archive pages * * @link https://codex.wordpress.org/Template_Hierarchy * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <?php if ( have_posts() ) : ?> <header class="page-header"> <?php the_archive_title( '<h1 class="page-title">', '</h1>' ); the_archive_description( '<div class="taxonomy-description">', '</div>' ); ?> </header><!-- .page-header --> <?php endif; ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : ?> <?php /* Start the Loop */ while ( have_posts() ) : the_post(); /* * Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part( 'template-parts/post/content', get_post_format() ); endwhile; the_posts_pagination( array( 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>', ) ); else :
https://riptutorial.com/de/home 175
get_template_part( 'template-parts/post/content', 'none' ); endif; ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();
Individuelle Post Type Einzelvorlage:
Hier ist ein Beispiel für eine einzelne Vorlage. Aus dem 20-jährigen Thema gezogen .
<?php /** * The template for displaying all single posts * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php /* Start the Loop */ while ( have_posts() ) : the_post(); get_template_part( 'template-parts/post/content', get_post_format() ); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) : comments_template(); endif; the_post_navigation( array( 'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>', ) );
https://riptutorial.com/de/home 176
endwhile; // End of the loop. ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();
In beiden Vorlagenbeispielen werden Partials gezogen , um den inneren Inhalt anzuzeigen.
Wenn Ihr untergeordnetes / übergeordnetes Design eine einzelne / Archivvorlage hat, sollten Sie diesen Code als Vorlage für Ihre neuen Vorlagen verwenden.
Vorlage für benutzerdefinierten Beitragstyp erstellen online lesen: https://riptutorial.com/de/wordpress/topic/6390/vorlage-fur-benutzerdefinierten-beitragstyp-erstellen
https://riptutorial.com/de/home 177
Kapitel 65: Vorlagenhierarchie
Bemerkungen
Plugins zum Debuggen in WordPress:
https://wordpress.org/plugins/query-monitor/•https://wordpress.org/plugins/debug-bar/•https://wordpress.org/plugins/debug-bar-console/•https://wordpress.org/plugins/kint-debugger/•https://wordpress.org/plugins/rest-api-console/•
Examples
Einführung
Eines der wichtigsten Dinge, die Sie lernen sollten, wenn Sie ein WordPress-Theme erstellen, ist die Hierarchie der WordPress-Vorlagen für Designs. Die Vorlagenhierarchie definiert, welche Vorlagendatei für jede Anforderung in welcher Reihenfolge geladen wird. Wenn die erste Vorlage in der Hierarchie nicht vorhanden ist, versucht WordPress, die nächste Vorlage usw. zu laden, bis Sie in index.php enden.
Um die Vorlagenhierarchie detailliert zu beschreiben, ist es natürlich am besten, ein Bild mit der vollen Struktur zu verwenden:
https://riptutorial.com/de/home 178
Die Vorlagenhierarchie beginnt mit den primären Seitentypen wie Archiv, einzelne Seite oder StarDanach finden wir die tatsächlichen Vorlagen, die geladen werden. Erstens gibt es die spezifischs
Zum Beispiel category-$slug.php
https://riptutorial.com/de/home 179
, die nur die Kategorie mit einem bestimmten Slug Ziele, beispielsweise category-books.php würde nur für die Kategorie mit der Schnecke verwendet wird book . Ein anderes Beispiel ist page-$id.php , das nur auf eine Seite mit einer bestimmten ID page-41.php Zum Beispiel würde page-41.php nur auf die Seite mit der ID 41 page-41.php .
Nach den Templates, die auf bestimmte Typen oder Posts page.php gelangen wir zu den generischen page.php , wie beispielsweise archive.php für alle Archivseiten oder page.php für alle Seiten. Denken Sie jedoch daran, dass diese nur verwendet werden, wenn die aktuelle Seite mit keiner der Vorlagen übereinstimmt, die in der Hierarchie höher liegen.
Wenn WordPress keine passenden Vorlagen im Vorlagenverzeichnis finden konnte, ist der letzte Fallback immer die Datei " index.php ist die einzige erforderliche Vorlagendatei in einem WordPress-Design.
Debuggen
Beim Debuggen der Hiearchy kann man sich leicht verirren. Sie können den integrierten Befehl debug_backtrace PHP debug_backtrace .
Fügen Sie das nächste Snippet in eine Vorlage ein, die Sie debuggen möchten, und zeigen Sie die generierte Seite an:
<!-- <?php print_r( debug_backtrace() ) ?> -->
Vorlagenhierarchie online lesen: https://riptutorial.com/de/wordpress/topic/6116/vorlagenhierarchie
https://riptutorial.com/de/home 180
Kapitel 66: Wie kann ich den Markdown-Editor in das Repeater-Add-on von Advance Custom Field integrieren?
Examples
MarkDown Editor hinzufügen
Ich habe die Lösung gefunden. Bitte beachten Sie die unten genannten Schritte.
Installieren Sie das WP-Markdown-Editor- Plugin.
Dann installieren Sie " acf-wp-wysiwyg " für das Repeaterfeld. Nun müssen Sie einige Dateien aktualisieren. Öffnen Sie diese Datei und gehen Sie zur Zeilennummer "180" oder gehen Sie zur Funktion "create_field"
echo '<script> var simplemde = new SimpleMDE({element: document.getElementById("'.$id.'")});jQuery(".quicktags-toolbar").css("display","none");</script>';
Jetzt unter "acf-repeater" plugin open "input.js" Datei, Zeilennummer "142"
ersetzen
new_field_html = this.$el.find('> table > tbody > tr.row-clone').html().replace(/(=["]*[\w-\[\]]*?)(acfcloneindex)/g, '$1' + new_id),
Mit
new_field_html = this.$el.find('> table > tbody > tr.row-clone').html().replace(/(["]*[\w-\[\]]*?)(acfcloneindex)/g, '$1' + new_id),
Wie kann ich den Markdown-Editor in das Repeater-Add-on von Advance Custom Field integrieren? online lesen: https://riptutorial.com/de/wordpress/topic/6602/wie-kann-ich-den-markdown-editor-in-das-repeater-add-on-von-advance-custom-field-integrieren-
https://riptutorial.com/de/home 181
Kapitel 67: Wordpress-Theme und Child-Theme-Entwicklung
Einführung
Wordpress ist ein weit verbreitetes CMS zum Erstellen einfacher Informationswebsites, aber auch zum Erstellen anspruchsvollerer Websites und sogar kleiner Webshops.
Wordpress verwendet Themen. Diese Themen werden zum Erstellen der Layout- und Inhaltsfunktionalität einer Wordpress-Website verwendet. Die Themen sind überall im Internet zu finden.
Jeder hat seine eigenen Funktionen und sein eigenes Layout, aber manchmal ist es schwierig, das richtige Thema für eine Website zu finden. Glücklicherweise können wir auch ein eigenes Thema erstellen.
Examples
Entwickeln Sie Ihr eigenes Thema
Ein WordPress-Theme besteht aus zwei Arten von Dateien. Die grundlegenden Dateien, die jedes Thema enthält, und die Dateien, die das Layout und die Funktionalität des Themas definieren. Diese zweite Gruppe werde ich die themenspezifischen Dateien nennen.
Die grundlegenden Designdateien Die grundlegenden Designdateien sind die Dateien, die zum Einrichten und Registrieren eines Designs verwendet werden. In der folgenden Liste werde ich jede Datei und ihre Verwendung kurz beschreiben. Später füge ich die grundlegendsten Beispieldateien hinzu, die zum Einrichten Ihres eigenen WordPress-Themas erforderlich sind.
functions.php : Mit der Datei functions.php werden alle Funktionen, Seitenleisten, Skripts und Include-Elemente des Designs registriert. In diese Datei können Sie zum Beispiel CSS-Dateien, JS-Dateien usw. aufnehmen.
•
Kopf- Header and footer : Die Kopf- und Fußzeilendateien (header.php und footer.php) sind die Dateien, die zum Aufrufen der Kopf- und Fußzeile verwendet werden. Die Header- und Footer-Datei enthält beispielsweise die Verknüpfung zum WordPress-Backend-System.
•
index.php : Die Datei index.php ist die Datei, die die Standardseitenvorlage erstellt. In dieser Datei können Sie Teile dieses Layouts für Standardvorlagen anzeigen, bearbeiten und entfernen.
•
single.php : Die single.php-Datei ist die Datei, mit der die Seite mit den einzelnen Posts erstellt wird. Genau wie die Default-Vorlage für die Seiten, aber jetzt für die einzelnen Postseiten.
•
format.php Die format.php-Datei ist die Datei, die die Inhaltstextvorlage aus einer Seite erstellt. Wenn Sie also eine Homepage hätten und diese vom Backend aus bearbeiten
•
https://riptutorial.com/de/home 182
würden, indem Sie einen Text hinzufügen. Diese Datei erstellt die Standardauszeichnung dieses Textes.404.php Die Datei 404.php erstellt die 404-Vorlage. Diese Datei besteht aus dem Grundlayout dieser Seite.
•
archive.php Die Datei archive.php erstellt das Layout der Archivseite.•style.css Die grundlegende Stylesheet-Datei.•
In dieser Liste können Sie also alle erforderlichen Dateien für die Einrichtung Ihres eigenen Wordpress-Designs sehen. Schauen wir uns nun einige Dateien an, die Sie erstellen können, wenn Sie möchten, aber keine Dateien für ein WordPress-Design sind. Bei diesen Dateien handelt es sich meistens um Vorlagendateien und andere Funktionserweiterungen.
Benutzerdefinierte Seitenvorlagen page-<your own name>.php : In einem Wordpress- page-<your own name>.php Sie mehrere Seitenvorlagen erstellen. indem Sie neue Seitenvorlagendateien erstellen. Eine Standardseitenvorlagendatei besteht aus den folgenden Namensattributen. page name of the template und .php Wenn Sie beispielsweise eine neue Seitenvorlage für Ihre .php erstellen möchten, können Sie sie als page-blog.php Wordpress liest die Datei automatisch und fügt sie dem page-blog.php hinzu. Stellen Sie sicher, dass Sie mindestens die Funktionen get_header() und get_footer() . Stellen Sie außerdem sicher, dass Sie Ihre Vorlage in einem Kommentar oben in der Datei benennen, indem Sie das folgende Beispiel hinzufügen.
<?php /* * Template Name: Homepage Template */ get_header(); ?>
Individuelle Post-Seitenvorlagen single-<your own name>.php : In einem Wordpress- single-<your own name>.php ebenso wie die oben beschriebene Seitenvorlage Ihre eigenen Seitenvorlagen für einzelne Posts erstellen. Genau wie die Seitenvorlage besteht die Datei aus drei Teilen single für die Erklärung , es ist eine einzelne Post - Seite <your name of the template> und die Dateiendung .php . Genau wie die Mindestanforderungen für die Seitenvorlage, um sicherzustellen, dass Wordpress die neue Vorlage liest, fügen Sie die Funktionen get_header() und get_footer() . Und natürlich fügen Sie auch Ihren Vorlagennamen hinzu, wie im Beispiel unten
<?php /* * Template Name: Post Portfolio * Template Post Type: post, page */ ?>
Wir geben auch den Template post type: der Template post type: , der für die Art der Vorlage steht, in diesem Fall Post und Seite.
https://riptutorial.com/de/home 183
Individuelle Posttextvorlagen format -<your own name>.php : In einem Wordpress- format -<your own name>.php Sie auch Post-Output-Vorlagen erstellen. Diese Formatvorlagen sind das Layout und der Inhalt eines Beitrags. Wenn Sie beispielsweise möchten, dass der Beitrag nur den Inhalt oder den Titel des Beitrags anzeigt, können Sie diese Vorlagen verwenden, um diese Art von Anpassungen zu erstellen. Da diese Vorlagen nur den Post-Back- get_header() -Inhalt formatieren, der von einem Benutzer erstellt wurde, müssen get_header() und get_footer() nicht get_footer() da diese bereits in den Seitenvorlagen definiert sind. Stellen Sie sicher, dass Ihre Vorlage einen Beitrag anhand des folgenden grundlegenden Beispiels erkennen kann.
<div> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> </article> </div>
Nun, da wir etwas über die grundlegenden Dateien und einige der vielen vorlagenspezifischen Dateien wissen, ist es an der Zeit, sich mit Seitenleisten und Widgets zu beschäftigen. In der Zukunft wird dies zusammen mit einem Schritt-für-Schritt-Tutorial zum Erstellen eines eigenen Wordpress-Designs hinzugefügt.
Wordpress-Theme und Child-Theme-Entwicklung online lesen: https://riptutorial.com/de/wordpress/topic/9940/wordpress-theme-und-child-theme-entwicklung
https://riptutorial.com/de/home 184
Kapitel 68: wp_get_current_user ()
Syntax
wp_get_current_user ()•
Examples
Den aktuellen Benutzer abrufen
Abrufen aller Informationen des aktuellen Benutzers in WordPress mithilfe der vordefinierten Funktion wp_get_current_user();
<?php $current_user = wp_get_current_user(); echo "Username :".$current_user->user_login; echo "Username :".$current_user->ID; echo "Username :".$current_user->user_pass; echo "Username :".$current_user->user_nicename; echo "Username :".$current_user->user_email; echo "Username :".$current_user->user_url; echo "Username :".$current_user->user_registered; echo "Username :".$current_user->user_activation_key; echo "Username :".$current_user->user_status; echo "Username :".$current_user->display_name; ?>
Verwenden Sie die foreach-Schleife, um Benutzerinformationen von wp_get_current_user () abzurufen.
$user = wp_get_current_user(); foreach($user->data as $key=>$user_data){ if($key == 'user_pass' || $key == 'user_activation_key' || $key=='user_status'){} else{ $nice_key = ucfirst(str_replace('_', ' ', $key)); if($key == 'user_registered'){ $user_data = date_i18n(get_option('date_format'), strtotime($user_data)); } echo $nice_key . ' : ' . $user_data . '<br />'; } }
wp_get_current_user () online lesen: https://riptutorial.com/de/wordpress/topic/2693/wp-get-current-user---
https://riptutorial.com/de/home 185
Kapitel 69: wp_get_current_user ()
Examples
Aktuelle Informationen zum angemeldeten Benutzer erhalten
Ruft die Informationen zum aktuell angemeldeten Benutzer ab und speichert sie in der globalen Variablen $ current_user
Diese Funktion akzeptiert keine Parameter.
Verwendungszweck:
<?php wp_get_current_user(); ?>
Beispiel:
<?php $current_user = wp_get_current_user(); echo 'Username: ' . $current_user->user_login . "\n"; echo 'User email: ' . $current_user->user_email . "\n"; echo 'User level: ' . $current_user->user_level . "\n"; echo 'User first name: ' . $current_user->user_firstname . "\n"; echo 'User last name: ' . $current_user->user_lastname . "\n"; echo 'User display name: ' . $current_user->display_name . "\n"; echo 'User ID: ' . $current_user->ID . "\n"; ?>
Um festzustellen, ob ein Besucher angemeldet ist oder nicht, können Sie zuvor is_user_logged_in () verwenden und dann die aktuellen Benutzerinformationen abrufen, wenn der Besucher angemeldet ist:
<?php if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); echo 'Welcome, ' . $current_user->user_login . '!'; } else { echo 'Welcome, visitor!'; } ?>
wp_get_current_user () online lesen: https://riptutorial.com/de/wordpress/topic/6649/wp-get-current-user---
https://riptutorial.com/de/home 186
Kapitel 70: WP_Query () Schleife
Einführung
WP_Query zur Abfrage von Beiträgen, Seiten und benutzerdefinierten Beitragstypen. Sie erhalten eine Liste für bestimmte Beiträge und Seiten oder benutzerdefinierte Beitragstypen. WP_Query ermöglicht das Abrufen von Beiträgen aus der Datenbank gemäß Ihren Kriterien.
Examples
Letzte 10 Beiträge abrufen
$args = array( 'post_type'=>'post', 'posts_per_page' =>'10' ); $latest_posts_query = new WP_Query( $args ); if($latest_posts_query->have_posts()) : while ( $latest_posts_query-> have_posts()) : $latest_posts_query->the_post(); //Get post details here endwhile; endif;
WP_Query () Schleife online lesen: https://riptutorial.com/de/wordpress/topic/8301/wp-query----schleife
https://riptutorial.com/de/home 187
Kapitel 71: WP-CLI
Einführung
WP-CLI ist ein Satz Befehlszeilen-Tools zum Verwalten von WordPress-Installationen. Sie können Plugins aktualisieren, Installationen mit mehreren Standorten konfigurieren und vieles mehr, ohne einen Webbrowser zu verwenden.
Examples
Themen verwalten
Holen Sie sich eine Liste von Themen.
$ wp theme list
Installieren Sie die neueste Version von WordPress.org und aktivieren Sie sie
$ wp theme install twentysixteen --activate
Installation von einer lokalen Zip-Datei
$ wp theme install ../my-theme.zip
Installation von einer Remote-ZIP-Datei
$ wp theme install http://s3.amazonaws.com/bucketname/my-theme.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef
Details zu einem installierten Thema abrufen
$ wp theme get twentysixteen --fields=name,title,version
Status des Themes abrufen
$ wp theme status twentysixteen
Plugins verwalten
Rufen Sie eine Liste mit Plugins ab
$ wp plugin list
Listet aktive Plugins auf der Site auf.
https://riptutorial.com/de/home 188
$ wp plugin list --status=active --format=json
Listen Sie Plugins an jedem Standort in einem Netzwerk auf.
$ wp site list --field=url | xargs -I % wp plugin list --url=%
Plugin aktivieren
$ wp plugin activate hello-dolly
Plugin deaktivieren
$ wp plugin deactivate hello-dolly
Plugin löschen
$ wp plugin delete hello-dolly
Installieren Sie die neueste Version von WordPress.org und aktivieren Sie sie
$ wp plugin install bbpress --activate
WP-CLI selbst verwalten
Zeigt die aktuell installierte Version an.
$ wp cli version
Nach Updates für WP-CLI suchen.
$ wp cli check-update
Aktualisieren Sie WP-CLI auf die neueste stabile Version.
$ wp cli update
Listen Sie alle verfügbaren Aliase auf.
$ wp cli alias
Drucken Sie verschiedene Details zur WP-CLI-Umgebung.
$ wp cli info
Legen Sie die Liste der installierten Befehle als JSON ab.
https://riptutorial.com/de/home 189
$ wp cli cmd-dump
Laden Sie eine WordPress-Installation herunter, installieren, aktualisieren und verwalten Sie sie.
Laden Sie den WordPress-Kern herunter
$ wp core download --locale=nl_NL
Installieren Sie WordPress
$ wp core install --url=example.com --title=Example --admin_user=supervisor --admin_password=strongpassword [email protected]
Zeigen Sie die WordPress-Version an
$ wp core version
Verwandeln Sie eine Einzelstandortinstallation in eine WordPress-Mehrfachstandortinstallation.
$ wp core multisite-convert
Installieren Sie WordPress Multisite von Grund auf.
$ wp core multisite-install
Benutzer verwalten
Benutzer-IDs auflisten
$ wp user list --field=ID
Erstellen Sie einen neuen Benutzer.
$ wp user create bob [email protected] --role=author
Aktualisieren Sie einen vorhandenen Benutzer.
$ wp user update 123 --display_name=Mary --user_pass=marypass
Löschen Sie den Benutzer 123 und weisen Sie dem Benutzer 567 neue Beiträge zu
$ wp user delete 123 --reassign=567
Führen Sie grundlegende Datenbankoperationen mit den in wp-config.php
https://riptutorial.com/de/home 190
gespeicherten Berechtigungsnachweisen durch
Erstellen Sie eine neue Datenbank.
$ wp db create
Eine vorhandene Datenbank löschen
$ wp db drop --yes
Setzen Sie die aktuelle Datenbank zurück.
$ wp db reset --yes
Führen Sie eine SQL-Abfrage aus, die in einer Datei gespeichert ist.
$ wp db query < debug.sql
WP-CLI online lesen: https://riptutorial.com/de/wordpress/topic/9169/wp-cli
https://riptutorial.com/de/home 191
Kapitel 72: WP-Cron
Examples
wp_schedule_event () Beispiel
// register activation hook register_activation_hook( __FILE__, 'example_activation' ); // function for activation hook function example_activation() { // check if scheduled hook exists if ( !wp_next_scheduled( 'my_event' )) { // Schedules a hook // time() - the first time of an event to run ( UNIX timestamp format ) // 'hourly' - recurrence ('hourly', 'twicedaily', 'daily' ) // 'my_event' - the name of an action hook to execute. wp_schedule_event( time(), 'hourly', 'my_event' ); } } add_action( 'my_event', 'do_this_hourly' ); // the code of your hourly event function do_this_hourly() { // put your code here } // register deactivation hook register_deactivation_hook(__FILE__, 'example_deactivation'); // function for deactivation hook function example_deactivation() { // clear scheduled hook wp_clear_scheduled_hook( 'my_event' ); }
Wichtig: Der WordPress-Cron wird nur ausgeführt, wenn eine Seite Ihrer Website aufgerufen wird. Für Websites mit wenig Datenverkehr müssen Sie also den Cron in Ihrem Hosting einrichten, um die Seiten aufzurufen.
benutzerdefiniertes Wiederholungsintervall in wp_schedule_event ()
// this function add custom interval (5 minutes) to the $schedules function five_minutes_interval( $schedules ) { $schedules['five_minutes'] = array( 'interval' => 60 * 5, 'display' => '5 minutes'; ); return $schedules; } // add a custom interval filter add_filter( 'cron_schedules', 'five_minutes_interval' );
https://riptutorial.com/de/home 192
// Schedules a hook wp_schedule_event( time(), 'five_minutes', 'my_event' );
WP-Cron online lesen: https://riptutorial.com/de/wordpress/topic/6783/wp-cron
https://riptutorial.com/de/home 193
Credits
S. No
Kapitel Contributors
1Erste Schritte mit WordPress
4444, A. Raza, Andrew, animuson, Anupam, Chris Fletcher, Ciprian, Community, Florida, James Jones, JonasCz, Leo F, Marc St Raymond, Mayank Gupta, Milap, nus, Panda, rap-2-h, Seth C., Shubham, Trevor Clarke, vajrasar
2 add_action () Abel Melquiades Callejo, Waqas Bukhary
3 add_editor_style () Gabriel Chi Hong Lee
4 add_menu_page () brasofilo, Gabriel Chi Hong Lee
5add_submenu_page ()
Gabriel Chi Hong Lee, theoretisch
6add_theme_support ()
Gabriel Chi Hong Lee
7Admin-Dashboard-Widgets
theoretisch
8 AJAXAndy, Digvijayad, Gaurav Srivastava, GreatBlakes, Nisarg Patel, Ruslan Murarov, stweb
9 Aktionen und Filter David, Ihor Vorotnov, Mrinal Haque, Trying Tobemyself
10Aktualisieren Sie WordPress manuell
KnightHawk
11Alternierende Hauptschleife (Filter pre_get_posts)
Dawid Urbanski, Petar Popovic
12 Beiträge abfragen dingo_d
13
Benutzerdefinierte Auszüge mit excerpt_length und excerpt_more
inkista, Petar Popovic, RamenChef
14Benutzerdefinierte Beitragstypen
Caio Felipe Pereira, Dan Devine, J.D., janw, jgraup, Kushal Shah, Omar Khaiyam, Ranuka, theoretisch
Customizer Hallo 15 Dan Green-Leipciger
https://riptutorial.com/de/home 194
Welt
16
Customizer-Grundlagen (Panel hinzufügen, Abschnitt, Einstellungen, Steuerung)
4444, Ahmad Awais, RamenChef
17 Das $ wpdb-Objekt Kushal Shah, mcon, stweb
18 Debuggen barbocc, dingo_d, jgraup
19 der Titel() Gabriel Chi Hong Lee
20Die Admin-Leiste (aka "Die Symbolleiste")
dingo_d, Harshal Limaye, JCL1178, Kushal Shah
21Die Schleife (Haupt-WordPress-Schleife)
anik4e, Dawid Urbanski
22 drin Abel Melquiades Callejo, barbocc
23Einreihen von Skripten
dingo_d, Harshal Limaye, J.D., mbacon40, montrealist, Pelmered, Petar Popovic
24 Einreihen von Stylesdingo_d, Harshal Limaye, Laxmana, mnoronha, montrealist, Petar Popovic, RamenChef, Ruslan Murarov, virtualLast
25
Entfernen Sie automatische Zeilenumbrüche aus Inhalt und Auszug
Austin Winstanley
26Erstellen einer benutzerdefinierten Vorlage
Petar Popovic
27Erstellen Sie einen Beitrag programmgesteuert
RamenChef, Roel Magdaleno, RRikesh
28Erstellung des WordPress-Plugins
Seth C.
29Führen Sie WordPress local mit XAMPP aus
Pierre.Vriens, theoretisch
https://riptutorial.com/de/home 195
30Funktion: add_action ()
bosco, RamenChef
31Funktion: wp_trim_words ()
Harshal Limaye
32 get_bloginfo ()Abel Melquiades Callejo, Harshal Limaye, HeyCameron, KenB, Nate Beers, RamenChef, Tom J Nowell, virtualLast, Wes Moberly
33 get_home_path () Ihor Vorotnov
34 get_option () Gabriel Chi Hong Lee
35 get_permalink () Gabriel Chi Hong Lee
36 get_template_part () Dan Devine, Kushal Shah
37 get_the_category () Gabriel Chi Hong Lee
38 get_the_title () Gabriel Chi Hong Lee
39Grundlegendes zum Thema Kind
Andrei, Razvan Onofrei, Vlad Olaru
40
Hinzufügen / Entfernen von Kontaktinformationen für Benutzer mit dem Filterhaken user_contactmethods
Petar Popovic, RamenChef
41 home_url () dingo_d, Kushal Shah, matthew, Mr. Developer
42Installation und Konfiguration
Kenyon, Marco Romano, Ping.Chen, S.L. Barth, stig-js, theoretisch, Yuan Lung Luo
43 KurzcodeAd Wicks, Adam Genshaft, brasofilo, John Slegers, Kylar, Shashank Agarwal
44 Kurzcode mit Attribut Digvijayad, Firefog, RamenChef
45 Kurzwahlnummern Pelmered
46 Meta Box Austin Winstanley
47Netzwerkanfragen mit HTTP-API durchführen
Jordan, mjangda, Rarst
48 Options-API Harshal Limaye, Pat J, RamenChef
https://riptutorial.com/de/home 196
49 Plugin-Entwicklung Angle.Ŗ, Ping.Chen
50 Postformate Shashank Agarwal
51 REST-API Picard
52 Seitenleisten dingo_d, Kushal Shah, theoretisch
53Shortcode hinzufügen
purvik7373, RamenChef
54Sicherheit in WordPress - Desinfektion
Laxmana
55Sicherheit in WordPress - Flucht
Laxmana, the4kman
56Sichern Sie Ihre Installation
James Jones
57 Standortmigration Austin Winstanley
58 Taxonomien adifatz, Kushal Shah, purvik7373
59 template_include Abel Melquiades Callejo, David, RamenChef
60 Themes Jef
61
Version von Wordpress und Stylesheets entfernen
jay.jivani, mnoronha, theoretisch
62Vorlage für benutzerdefinierten Beitragstyp erstellen
Ashok G, Egnaro, Joe Dooley, mnoronha
63 Vorlagenhierarchie jgraup, MarZab, Pelmered, theoretisch
64
Wie kann ich den Markdown-Editor in das Repeater-Add-on von Advance Custom Field integrieren?
Fatbit
65Wordpress-Theme und Child-Theme-Entwicklung
Deathstorm
https://riptutorial.com/de/home 197
66wp_get_current_user ()
Abel Melquiades Callejo, Benoti, Muhammad Farrukh Faizy
67WP_Query () Schleife
vrajesh
68 WP-CLI jgraup
69 WP-Cron stweb
https://riptutorial.com/de/home 198