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');