Wordpress Projekt
Wordpress Deutschland
Wordpress Code Reference
Navigation:
Installation
Sicherheit der Installation anpassen
Konfiguration anpassen
Update auf eine neue Version
sonstiges
Ordnerstruktur | |
---|---|
/wp-admin | Administrations Backend für die interne Verwaltung |
/wp-content | |
/wp-content/languages | Sprachdateien |
/wp-content/plugins | alle Plugins |
/wp-content/themes | Designs der Webseite |
/wp-content/uploads | hochgeladene Dateien, Bilder, Videos u.a. /wp-includes - |
Dateien | |
/wp-includes/version.php | Versionsdatei von WordPress |
/wp-includes/plugin.php | |
wp-register.php | Benutzerregistrierung, Loginseite von extern (http://domain.tld/wp-register.php) |
PlugIns | |
---|---|
Wordtube | Player für Videodateien |
Security | |
Akismet | Spam Kommentare sortieren engl. |
Antispam Bee | SPAM Prüfung deutsch |
Exploit Scanner | Security Prüfung auf Hacker attacken |
Secure Wordpress | entfernt Wordpress Versionsanzeige u.a. |
Limit Login Attempts | Anzahl Loginversuche einschränken |
System | |
Statify | Statistic PlugIn |
Capability Manager | Rechte der BenutzeRollen bearbeiten, neue anlegen |
Role Scoper | Rechte der BenutzeRollen bearbeiten |
Better Delete Revision | Revisionen löschen |
Debug Queries | zeigt Anzahl Datenbankabfragen (Performance) |
WP Permalauts | passt Deutsche Umlaute in Titeln für die URL an |
Domain-Mirror | Wordpress unter mehrere Domains erreichbar machen |
Editoren | |
WP Editor | WYSIWYG Editor, HTML Code wird Farbig hervorgehoben |
WP Super Edit | WYSIWYG Editor |
TinyMCE Advanced | Erweiterung für den WYSIWYG Editor von Wordpress |
CKEditor For WordPress | WYSIWYG Editor |
Tools | |
CMS Tree Page View | Aufklapp-Baumstruktur zur Seiten oder Beitragsverwaltung |
Simply Show IDs | fügt eine Spalte in der Seiten und Beitragsübersicht hinzu, mit der DatenbankID der Seite/Artikel |
Contact Form 7 | Kontaktformular |
Newsletter | RSS Feeds |
Breadcrumb NavXT | Breadcrumb Menü |
PS Disable Auto Formatting | deaktiviert (wpautop) <p> und <br> Tags werden im Content angezeigt |
Breadcrumb Menü ohne PlugIn
// breadcrumb function nav_breadcrumb() { $delimiter = '»'; $home = 'Home'; $before = '<span class="current">'; $after = '</span>'; if ( !is_home() && !is_front_page() || is_paged() ) { echo '<div id="breadcrumb">'; global $post; $homeLink = get_bloginfo('url'); echo '<a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' '; if ( is_category() ) { global $wp_query; $cat_obj = $wp_query->get_queried_object(); $thisCat = $cat_obj->term_id; $thisCat = get_category($thisCat); $parentCat = get_category($thisCat->parent); if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' ')); echo $before . single_cat_title('', false) . $after; } elseif ( is_day() ) { echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' '; echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' '; echo $before . get_the_time('d') . $after; } elseif ( is_month() ) { echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' '; echo $before . get_the_time('F') . $after; } elseif ( is_year() ) { echo $before . get_the_time('Y') . $after; } elseif ( is_single() && !is_attachment() ) { if ( get_post_type() != 'post' ) { $post_type = get_post_type_object(get_post_type()); $slug = $post_type->rewrite; echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' '; echo $before . get_the_title() . $after; } else { $cat = get_the_category(); $cat = $cat[0]; echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' '); echo $before . get_the_title() . $after; } } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) { $post_type = get_post_type_object(get_post_type()); echo $before . $post_type->labels->singular_name . $after; } elseif ( is_attachment() ) { $parent = get_post($post->post_parent); $cat = get_the_category($parent->ID); $cat = $cat[0]; echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' '); echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a> ' . $delimiter . ' '; echo $before . get_the_title() . $after; } elseif ( is_page() && !$post->post_parent ) { echo $before . get_the_title() . $after; } elseif ( is_page() && $post->post_parent ) { $parent_id = $post->post_parent; $breadcrumbs = array(); while ($parent_id) { $page = get_page($parent_id); $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>'; $parent_id = $page->post_parent; } $breadcrumbs = array_reverse($breadcrumbs); foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' '; echo $before . get_the_title() . $after; } elseif ( is_search() ) { echo $before . 'Ergebnisse für Ihre Suche nach "' . get_search_query() . '"' . $after; } elseif ( is_tag() ) { echo $before . 'Beiträge mit dem Schlagwort "' . single_tag_title('', false) . '"' . $after; } elseif ( is_author() ) { global $author; $userdata = get_userdata($author); echo $before . 'Beiträge veröffentlicht von ' . $userdata->display_name . $after; } elseif ( is_404() ) { echo $before . 'Fehler 404' . $after; } if ( get_query_var('paged') ) { if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' ('; echo ': ' . __('Page') . ' ' . get_query_var('paged'); if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')'; } echo '</div>'; } }
aktivieren des Breadcrumb Menüs in der header.php, page.php, single.php oder archiv.php
<?php if (function_exists('nav_breadcrumb')) nav_breadcrumb(); ?>
- unter Debian/ubuntu, Pakete installieren, Verzeichnis erstellen, Herunterladen, entpacken und Berechtigungen setzen.
apt-get install apache2-mpm-prefork php5 libapache2-mod-php5 unzip mkdir /www mkdir /www/log wget http://wpde.org/files/2013/01/wordpress_351-de.zip -P /www/ unzip /www/wordpress_351-de.zip -d /www/ chown -R www-data:www-data /www
- Apache installieren und anpassen
a2enmod rewrite php5
# /etc/apache2/conf.d/virtual.conf # Multiple VirtualHosts # Alias /images/ /www/images/ Alias /download/ /www/download/ NameVirtualHost *
# /etc/apache2/sites-available/wordpress <VirtualHost *> ServerName domain.tld ServerAlias wordpress.zz DocumentRoot /www/wordpress RewriteEngine On RewriteOptions inherit CustomLog /www/log/wordpress.log combined ErrorLog /www/log/wordpress.err LogLevel notice </VirtualHost>
a2ensite wordpress service apache2 restart
<!-- /www/wordpress/info.php --> <?php phpinfo (); ?>
im Browser aufrufen http://domain.tld/info.php
- MySQL installieren und anpassen
apt-get install mysql-server mysql-client php5-mysql
mysql -u root -p CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; GRANT ALL ON wordpress.* TO 'wp_user'@'localhost' IDENTIFIED BY 'my-passwd';
DBOwner der Wordpress Datenbank
Benutzer: wp_user
Passwort: my-passwd
- Wordpress Installation anpassen
cp wp-config-sample.php wp-config.php
- Anpassung der wp-config.php
# wp-config.php ... /**#@+ * Authentication Unique Keys and Salts. */ define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here'); /**#@-*/ ... $table_prefix = 'wp_';
Authentication Unique Keys and Salts - Sicherheitsschlüssel für die Verschlüsselung der Daten in der MySQL Datenbank
$table_prefix - Datenbanktabellen Präfix, sollte individuell gesetzt werden um SQL-Injections zu erschweren, jede Wordpress Instanz benötigt einen Eigenen Präfix um die Installation zu trennen.
Jetzt kann man im Browser http://domain.tld/wp-admin für die weitere Einrichtung aufrufen.
Fehlermeldung beim Start von Wordpress für die Ersteinrichtung
Failed opening required ... (include_path='.:/usr/share/php:/usr/share/pear')
Lösung, Zugriffsrechte auf die wp-config.php prüfen oder folgenden Befehl ausführen.
update PEAR
Artikel WordPress sicherer machen
- Zugriff auf wp-config.php verhindern, per .htaccess oder Apache Konfiguration ein Beispiel für die Apache Konfiguration
# /etc/apache2/conf.d/wordpress # /wp-config.php vor Zugriff schützen <Files wp-config.php> Order Deny,Allow Deny from all </Files> # /wp-login.php durch Passwortabfrage schützen <Files wp-login.php> AuthName "Admin-Bereich" AuthType Basic AuthUserFile >>>Pfad zu htpasswd-Datei<<<.htpasswd require valid-user </Files> # /wp-admin/ vor Zugriff schützen <FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)"> Order Deny,Allow Deny from all </FilesMatch> # Datei admin-ajax.php vom Schutz ausnehmen, da diese von einigen PlugIns benutzt wird <Files admin-ajax.php> Order Allow,Deny Allow from all Satisfy any </Files
andere Variante Wordpress Zugriff auf wp-login.php nur vom T-Online und Arcor Netz aus.
<Files wp-login.php> Order Deny,Allow Deny from all Allow from .t-ipconnect.de Allow from .arcor-ip.net </Files>
# /etc/php5/apache2/php.ini absichern [PHP] register_globals = off allow_url_fopen = off
safe_mode = on open_basedir = <Pfadname des Webverzeichnisses> disable_functions = exec,system,passthru,shell_exec,popen,escapeshellcmd,proc_open,proc_nice,ini_restore display_errors = off
- PlugIn Search and Replace
Die Einstellung ersetzt die User-ID 1 durch die User-ID 239, das soll Angriffe erschweren, da automatische Scripte nicht mehr greifen können.
ändern der UserID des Administrators
Einstellungen | Suche in
Feld
User-ID: aktivieren
Suche nach: 1
Ersetze mit: beliebige Ziffernfolge (z.B. 239)
- PlugIn Limit Login Attempts
Anzahl Loginversuche einschränken
- PlugIn Secure Wordpress
entfernt Wordpress Versionsanzeige u.a.
- Einstellungen
Einstellungen | Lesen
Startseite zeigt:
Einstellungen | Permalinks
Benutzerdefinierte Struktur: /%category%/%postname%
- Zugriff aus Adminbackend auf SSL beschränken
/** wp-config.php */ ... define('FORCE_SSL_ADMIN', true); ...
- Anzahl der Revisionen reduzieren auf 5, mit False wird keine Revision mehr angelegt.
/** wp-config.php * Anzahl der Revisionen auf 5 setzen. */ ... define('WP_POST_REVISIONS', 5); ...
- Multisite Support
nach dem ändern der wp-config erscheint im Admin Menü unter Werkzeuge | Netzwerk-Einrichten
/** wp-config.php * Multisite Support aktivieren */ ... define('WP_ALLOW_MULTISITE', true); ...
- Backup
PlugIn WP-DB-Backup - sichert die Datenbank
Backup aller Dateien des Wordpress Ordners
- Vorbereitung zum Update auf neue Version
alle PlugIns deaktivieren um Fehler zu verringern
auf dem Server alle Dateien und Verzeichnisse löschen, außer
/wp-content
wp-config.php
- neue Version laden und einspielen
Im Browser http://domain.tld/wp-admin/upgrade.php um die Datenbank zu aktualisieren
- Geschwindigkeit der Site prüfen
in die Fußzeile footer.php folgende Zeile einfügen
... <?php echo $wpdb->num_queries; ?>q, <?php timer_stop(1); ?>s </body>
Seite aktualisieren, in der letzten Zeile auf der Seite wird dann der Performance Wert angezeigt.
- Seiten Template erstellen
im Ordner /wp-content/themes/<Theme>/index.php kopieren z.B. nach seitentemplate.php. Die Vorlage bearbeiten, am Anfang ein paar Zeilen einfügen.
<?php /* Template Name: Seiten Vorlage */ ...
danach ist die Vorlage unter Seiten | Erstellen | Attribute | Template verfügbar
- Design | Editor
Twenty Eleven: Seiten-Template (page.php) wählen, den folgenden Abschnitt entfernen, auskommentiern oder auf false setzen
... <?php comments_template( '', true ); ?> ...
Twenty Eleven: Fußzeile (footer.php)
Link auskommentieren
<!-- <a href= ... ... </a> -->
Twenty Eleven: Stylesheet (style.css)
... .one-column #page { /* max-width: 690px; */ max-width: 100%; ...
Verlinkung am sichersten über die DatenbankID diese zeigt das PlugIn "Simply Show IDs" an.
http://domain.tld/?p=xxx
anstelle von xxx die ID angeben.
Themes bearbeiten
- je nach ausgewählten Theme in das passende Verzeichnis wechseln
wp-content/themes/<Themes Name>/
page-php und content.php für die Ausgabe einfacher Seiten
header.php - Kopf aller Seiten, die PHP Datei wird durch den Befehl "get_header(); ?>" aufgerufen. Das Primary Menü ist auch im Header enthalten.
footer.php - Fußzeile aller Seiten, wie beim Header analog auch bei der Fußzeile "<?php get_footer(); ?>" wird footer.php aufgerufen.
single.php - Einzelansicht eines Artikels im Blog
funktions.php - Registriert das Primary Menü im Frontend unter Design | Menüs und die Sidebar für die Widgets Design | Widgets
style.css - CSS Formatierung der kompletten Themes
index.php - Startseite
category.php - Kategorisierungen der Artikel
comments.php - Kommentare
- Conditional Tags
mit diesen Tags können Bedingungen festgelegt werden, wann z.B. Kommentare auf der Seite angezeigt werden, oder nur an den Admin geschickt werden.
z.B. in der comments.php
<!-- Conditional Tags --> <?php if(is_page()){ wp_list_comments(); }else{ echo 'Ihr Kommentar wird nicht veröffentlicht, sondern nur an den Admin geschickt';} comment_form(); ?>
die Bedingung gibt an, das auf einer einzelne Seite (is_page) die Kommentare angezeigt werden, ist der Benutzer z.B. in einem Artikel, wird dort nur der Hinweis "Ihr Kommentar wird nicht veröffentlicht ..." gezeigt.
is_page - einzelne Seite
is_single - einzelner Artikel
is_home - Startseite
is_frontpage -
- Änderung Theme Preference Lite style.css
... /* Primary wrappers */ ... #centered-wrapper /* max-width:1200px; */ max-width:98%; ...
/wp-content/themes/preference-lite/css/bootstrap.css
.container { width: 940px;
- MySQL Login
mysql -u'user' -p'Passwort' wordpress
- URL anzeigen
MySQL Tables anzeigen
show tables;
Tables: wp_options
Fields: option_name, option_value
Wert: siteurl option_value
select * from wp_options WHERE option_name = 'home' OR option_name = 'siteurl';
Beispiel von der Konsole
mysql -u'User' -p'Passwort' -s -N -e "use wordpress; \ select * from wp_options WHERE option_name = 'home' OR option_name = 'siteurl';" 2>/dev/null
Tables: wp_posts
Fields: guid, post_content
select guid from wp_posts; select post_content from wp_posts;
Tables: wp_postmeta
Fields: meta_value
select meta_value from wp_postmeta;
- URL anpassen
UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldurl', 'http://www.newurl') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'http://www.oldurl','http://www.newurl'); UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldurl', 'http://www.newurl'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.oldurl','http://www.newurl');