Wordpress Seite 2

Wenn ich Web-Development für Backend-Lösungen betreibe, dann am liebsten mit PHP & Wordpress. Viele Snippets kann man öfters gebrauchten und dann sammle ich die jetzt hier einfach. Einerseits tue ich das für selbst, falls ich wieder mal ein Wordpress-Theme programmieren muss, andererseits hilft es vielleicht auch dir weiter.

Sie befinden sich auf Seite 2.

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
Datenbank Perfomance für WordPress erhöhen mit mySQL Cache | Johannes Ulrich Gehrke

Datenbank Perfomance für WordPress erhöhen mit mySQL Cache

Die meisten Web-Server operieren bereits mit dem sehr perfomanten PHP7 und aktiviertem Objekt-Cache – Dadurch wird immer öfter die Datenbank auf dem Server zum so genannten Bottleneck (Flaschenhals) für die Perfomance. Hier kann es helfen zu prüfen ob der mySQL Cache eingestellt ist und falls nicht, diesen ggf. zu aktivieren. Um eine Seite auf Perfomance […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
<?php

/*
 *  REGISTRIERT NEUE NUTZER ROLLEN 
 *  FÜR KUNDEN / CLIENTS
 * 
 *  Client Master > Kann alles vom Editor + Nutzer, Menüs, Widgets & Customzier bearbeiten
 *  Client User   > Kann alles vom Editor + Menüs & Widgets bearbeiten
 * 
 *  Clients können nichts updaten oder selbst installieren
 * 
 */
function user_role_clients() {
	
	// *** ROLLE: CLIENT MASTER USER ***
	// Prüfen ob "Client Master User" bereits existiert
	if ( !get_role( 'client_master_user' ) ) {
		$user_capabilities = get_role( 'editor' )->capabilities; // Basis ist die 'Editor'-Rolle
		$user_capabilities = array_merge(
			$user_capabilities,
			// Zusätzliche Optionen hier hinzufügen
			array(
				// Client Master kann jetzt Nutzer bearbeiten
				'list_users'	=> true,
				'create_users'  => true,
				'edit_users'	=> true,
				'promote_users' => true,
				'delete_users'  => true,
				'remove_users'  => true,
				
				// Client Master kann Menüs & Widgets bearbeiten
				'edit_theme_options' => true,
				
				// Client Master kann in das Theme>Custumize Menü gehen
				'customize' => true,
			)
		);
		add_role( 'client_master_user', 'Client Master-User', $user_capabilities ); // Nutzer-Rolle hinzufügen
	}
	
	// *** ROLLE: CLIENT USER ***
	// Prüfen ob "Client  User" bereits existiert
	if ( !get_role( 'client_user' ) ) {
		$user_capabilities = get_role( 'editor' )->capabilities; // Basis ist die 'Editor'-Rolle
		$user_capabilities = array_merge(
			$user_capabilities,
			// Zusätzliche Optionen hier hinzufügen
			array(
				// Client User kann Menüs & Widgets bearbeiten
				'edit_theme_options' => true,
			)
		);
		add_role( 'client_user', 'Client User', $user_capabilities ); // Nutzer-Rolle hinzufügen
	}
	
}
	

add_action( 'admin_init', 'user_role_clients' );

Neue Nutzerrollen für Kunden im WordPress anlegen

Wenn man eine WordPress-Seite einem Kunden übergibt, muss man für diesen meistens auch einen Nutzer anlegen. Es kann sinnvoll sein dem Client eine neue spezielle Kunden-Rolle zu zuweisen. Der Kunde bekommt natürlich immer einen Account zu seiner eigenen WordPress-Seite. Jeder neue User hat bestimmte Rechte & Möglichkeiten. Bei WordPress ist es oft das Problem, dass […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
<?php
//
// FUNCTIONS
//

$post_id    = get_the_id();
$blog_title = get_bloginfo( 'name' );

$thumbnail_id        = get_post_thumbnail_id( $post_id );
$thumbnail_html      = lh_attached_thumbnail( $thumbnail_id, $post_id );

//
// TEMPLATE
//
?>
	<article>
		<div class="uk-grid post f-post f-teaser">
			<div class="uk-width-medium-2-3 f-post__media f-teaser__media">
				<?php echo $thumbnail_html; ?>
			</div>
			<div class="uk-width-medium-1-3 f-post__media f-teaser__media">
			 	<h2>
			 		<a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute();?> | <?php echo $blog_title; ?>">
			 			<?php the_title(); ?>
			 		</a>
			 	</h2>
			</div>
		</div>
	</article>
 	

Übersichtliche Struktur für WordPress-PHP Code

Ordnung in Template- & Funktions-Dateien zu halten ist bei größeren Projekten schwer und bei längeren Projekt enorm wichtig. Um Ordnung zu halten trenne ich meine Dateien in ‚Daten‘ & ‚Template‘. Oft wird man mit fremden Templates oder eigenen Templates aus düsterer Vergangenheit konfrontiert und ärgert sich, dass man sich nicht zu recht findet. Kleinste Änderungen […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
 function filter_plugin_deactivate_updates( $value ) {
    unset( $value->response['meta-box/meta-box.php'] );
    unset( $value->response['meta-box-group/meta-box-group.php'] );

    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_deactivate_updates' );

Updates von spezifischen Plugins in WordPress unterbinden

Updates sind eigentlich gute Sachen und sollten immer gemacht werden; allein der Sicherheit wegen. Manchmal kann es aber nötig sein updates zu verhindern, falls ein Plugin-Update nicht mit dem aktuellem System kompatibel ist. Mit diesem Code kann man unterdrücken dass WordPress eine Rückmeldung bekommt, dass für ausgewählte Plugins ein Update bereit steht. Man muss dazu […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
/*
 *  GIBT POSTS ALS ARRAY ZURÜCK
 * 
 *  $loop_args -> Ein Array mit den standard Argmuenten von Wordpress
 * 
 *  return -> Ein Array mit den Posts
 */

function get_posts_as_array( $loop_args = array() ) {
	// Ausgabe Array
	$posts_output = array();	
	
	
	// LOOP ARGUMENTS	
	$defaults = array( 
		'category_name'  => 'Allgemein'
		'posts_per_page' => 50, 
	);
	$post_loop_args = wp_parse_args( $loop_args, $defaults );
	
	
	// EVENT LOOP
	$post_loop = new WP_Query( $post_loop_args );
	while ( $post_loop->have_posts() ) : $post_loop->the_post();
		$single_post_id = get_the_id();
		$single_post    = array( // Event Daten
			'id'       => $single_post_id,
			'title'    => get_the_title( $single_post_id ),
			'content'  => get_the_content( $single_post_id ),
			'thumb_id' => get_post_thumbnail_id( $single_post_id ),
			'date'     => get_the_date( 'd. m. Y', $single_post_id ),
			'meta'     => array(
				// Sub-Array zum Post sind auch möglich um z.b.
				// eigene Optionen aus 'Custom Fields' oder Metaboxen speichern
				// 'EIGENE_OPTIONEN' => get_custom_field(),
			),
		);
		
		// aktuellen Post an Array anfügen
		array_push( $posts_output, $single_post );
		
	endwhile;
	
	// POST-ARRAY MANIPULATION
	// hier könnte noch Code eingefügt werden um das Array
	// Nachträglich zu verändertn, z.B. anders sortieren
	// asort( $posts_output );
	
	
	// RETURN
	return $posts_output;
};

WordPress Posts als Array speichern

Der WordPress Loop ist aus seiner Historie heraus super, um klassische Blog & News Beiträge zu generieren. Manchmal möchte man seine Template PHP Files aber nicht mit Loops zu kleistern, oder mag einfach ordentlichen Code haben. Dann kann es nützlich sein, Posts als Array nach dem Query zu speichern. Das Code-Beispiel hier kann in die […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
// Fügt HTML Code in den Footer ein
function add_tracking_to_footer() {
	// Template	
	$output = "\n\n 
	<!-- TRACKING -->
	<script type=\"text/javascript\">
		// Tracking Code hier rein kopieren
		doTracking();
	</script>	
	<!-- End of Tracking -->
	\n\n ";
		
	echo $output;
};
add_action( 'wp_footer', 'add_tracking_to_footer' );

Tracking, Script oder HTML in Footer einbauen

Die meisten WordPress Website- & Blog-Betreiber wollen Ihre Besucherzahlen messen. Dafür gibt es Tracking Scripts wie zum Beispiel Google Analytics. Die meisten Tracking Services generieren einen Javascript-Code, den man direkt in die Seite kopieren kann. Bei WordPress Themes kann dies jedoch heißen, dass man das Script in mehere footer-*.php Templates kopieren müsste. Das ist unpraktisch […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
/*
 * S T Y L E S 
 */

function lh_theme_styles() {
	
	$theme_object = wp_get_theme();
	$version      = $theme_object["Version"];
	
	wp_enqueue_style( 'main_css', get_template_directory_uri() . '/style.css',  array(), $version );	
}
add_action( 'wp_enqueue_scripts', 'lh_theme_styles' );

style.css Version mit WordPress-Theme Version gleich schalten

Wenn man an einem Theme etwas ändert, wird meistens auch die style.css angefasst – allein schon um die Versionsnummer zu erhöhen. Wenn man aber nicht jedes mal selbst an das wp_enqueue_style(); gehen will, um die Version zu erhöhen, kann man das auch automatisieren! Mit dem Befehl wp_get_theme(); kommt man das „Theme Objekt“ heran und kann die Version […]


Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37

Warning: Undefined array key 0 in /var/www/vhosts/johannes-gehrke.de/johannes-gehrke.de/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress



# === COMPRESSION & OPTIMIZATION (begin) ===
# Enable GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</ifmodule>

# Expires Headers - 2678400s = 31 days
<ifmodule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 7200 seconds"
  ExpiresByType image/gif "access plus 2678400 seconds"
  ExpiresByType image/jpeg "access plus 2678400 seconds"
  ExpiresByType image/png "access plus 2678400 seconds"
  ExpiresByType text/css "access plus 518400 seconds"
  ExpiresByType text/javascript "access plus 2678400 seconds"
  ExpiresByType application/x-javascript "access plus 2678400 seconds"
</ifmodule>

# Cache Headers
<ifmodule mod_headers.c>
  # Cache specified files for 31 days
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
  Header set Cache-Control "max-age=2678400, public"
  </filesmatch>
  # Cache HTML files for a couple hours
  <filesmatch "\.(html|htm)$">
  Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  # Cache PDFs for a day
  <filesmatch "\.(pdf)$">
  Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  # Cache Javascripts for 31 days
  <filesmatch "\.(js)$">
  
 # === COMPRESSION & OPTIMIZATION (end) === 
  

GZIP, Caching & Header-Control über die .htaccess für WordPress aktivieren

Um eine bessere Perfomance vom Server zu bekommen mit einer WordPress installation, lohnt es sich GZIP Komprimierung und Browser Caching zu aktivieren. Auf einem Server mit den entsprechenden Modulen, kann das problemlos aktiviert werden. Dieses Stück Code vom User „Umut“ habe ich auf Stackoverflow gefunden und ist seit dem meine goto Lösung für Komprimierung und Caching. […]

1 2