Wordpress

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.

Code & Links jetzt in meinem Wiki | Johannes Ulrich Gehrke

Code & Links jetzt in meinem Wiki

Hey hey Wiki – Ich habe mich entschieden meine Code Schnipsel, interessanten Links und Anleitungen in einem Wiki zu sammeln. Einerseits will ich es damit schaffen meine Inhalte immer zur Hand zu haben, andererseits ist es übersichtlicher/durchsuchbar im Vergleich zu dem Blog. In dem Wiki werde ich Frameworks & Libraries sammeln, Code (PHP, JS, WordPress) […]

/**
 * DISABLE UPDATES OF SPECIFIC PLUGINS
 */

// Hier listen, welche Plugins keine Update-Meldungen
// an den User ausgeben sollen
function filter_plugin_updates( $value ) {
	if( is_object( $value ) ) {
		// Deaktivieren von "Your Plugin" und "Another Plugin"
	    unset( $value->response['your-plugin/your-plugin.php'] );
	    unset( $value->response['another-plugianother-plugin.php'] );
	}
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );


// Hier eine Erinnerungs-Meldung auf der Übersicht der
// Update-Seiten, dass der Admin erinnert wird, welche
// Plugins nicht aktualisieren und warum
function updates_disabled_reminder() {
    $current_screen = get_current_screen();

	$message = "
		<div class=\"notice\">
			<p>
				Updates der Plugins <strong> "Your Plugin"</strong> & 
				<strong> "Another Plugin"</strong> wurden deaktiviert, da neue 
				Versionen nicht kompatibel sind mit dem Theme.
			</p>
		</div>";

    if( $current_screen->base == "update-core" ) {
    	echo $message;
    }

    if( $current_screen->base == "plugins" ) {
    	echo $message;
    }
}
add_action( 'admin_notices', 'updates_disabled_reminder' );

WordPress spezifische Plugin Updates ausschalten

Updates sind nicht immer gut – Manchmal kommt es vor, dass man ein Plugin installiert hat und nicht möchte das es aktualisiert wird. Wenn der Autor z.B. neue Versionen inkompatibel gemacht hat zu eigenen Erweiterungen oder die neue Plugin Version nicht kompatibel mit dem WordPress Theme ist. Dann kann es hilfreich sein, die Aktualisierungs-Nachricht im […]

Schnellere und bessere Debug-Ausgaben mit Javascript & console.log | Johannes Ulrich Gehrke

Schnellere und bessere Debug-Ausgaben mit Javascript & console.log

Console.log dauert immer so lange zu tippen – und sieht dann auch noch sehr rudimentär aus. Um im Javascript schneller mir Debug-Ausgaben mit Console.log her zaubern zu können, benutzt eine kurze Funktion d(); Diese Funktion ist nicht mehr als eine Kurzversion von console.log() aber mit Styling und Titel, so das die Konsolen Ausgabe auch Formatiert […]

WordPress Dashboard entfernen für Abonnenten / Subscriber | Johannes Ulrich Gehrke

WordPress Dashboard entfernen für Abonnenten / Subscriber

In einer Website mit User-Registration wird das WordPress oft nur genutzt um dem Abonnenten Zugriff auf Ihr Profil zu geben. Im WordPress-Backend wird jedoch standardmäßig das Dashboard nach dem Login aufgerufen. Das Dashboard hat jedoch keinen Mehrwert für den Subscriber und mach die Bedienung nur unnötig unübersichtlich – die meisten User sind schließlich Backends nicht […]

<?php

/**
 * Debug Helper, der eine HTML Vardump Ausgabe erzeugt
 * 
 * @param  mixed   $obj   Variable für den var_dump
 * @param  boolean $title Optional. Titel über der <pre> Ausgabe
 *
 * @return void
 */
function d( $obj, $title = false ){
	echo "<div class=\"debug\">";
	if( $title ) {
		echo "<h3 class=\"debug__title\">" . $title . "</h3>";
	}
	echo "<pre class=\"debug__print\">";
	var_dump( $obj );
	echo "</pre>";
	echo "</div>";
};


/* Beispiel-Benutzung */

d( $meine_var );

/* Oder */

d( $ausgabe_mit_titel, "Titel der Ausgabe" );

Bessere & schnellere Debug-Ausgaben mit var_dump

Debug-Ausgaben gehören einfach dazu – Ohne geht der Entwicklungsprozess nicht. An irgendeinem Punkt ist es immer notwendig sich einmal die ein oder andere Variable ausgeben zu lassen. Hier nutze ich PHPs var_dump(), aber dann bekommt man bei komplexen Objekten oder Arrays oft einen 4-Zeiligen Misthaufen an Output. Ich habe mir eine Hilfsfunktion geschrieben d(). Das […]

<?php
/**
 * Gibt ein Array zurück mit allen Parent Posts ohne Startseite
 *
 * Achtung: Die Funktion ist rekursiv und Pages
 * mit der ID '0' werden nicht ausgewertet
 *
 * @param  string|int  $id         Post-ID
 * @param  int         $max_depth  Optional. Maximale Crawl Tiefe
 *
 * @return array|bool  Die aktuelle Seite & Eltern Seiten als Array
 */
function p_get_breadcrump_posts( $id, $max_depth = 5 ){
	if( $max_depth == 0 ) { return false; };
	$post = get_post( $id );
	$post_data = [];
	if( intval( $post->post_parent ) > 0 ) {
		$post_data = p_get_breadcrump_posts( $post->post_parent, ( $max_depth - 1) );
	}
	$post_data[] = [
		'id'        => $post->ID,
		'title'     => $post->post_title,
		'parent'    => $post->post_parent,
		'permalink' => get_permalink( $post->ID ),
	];

	return $post_data;
};

Breadcrump für WordPress Seiten (Pages)

Breadcrumps für WordPress sind Klassiker – Klassiker sind sie aber leider, weil es keine eigene WordPress Funktion gibt um diese zu generieren. Ich habe hier ein Script geschrieben, mit dem man für Seiten (Pages) ein Breadcrump Array erstellen kann. Dieses funktioniert nicht so wirklich mit Blogbeiträgen (Posts), weil diese im eigentlichen Sinne keine Eltern-Seiten haben, […]

Notwendige WordPress Plugins vom Theme managen lassen | Johannes Ulrich Gehrke

Notwendige WordPress Plugins vom Theme managen lassen

Das eigene Theme braucht oft Plugins – Viele Funktionen sind unnötig jedes mal selbst zu schreiben, oder man möchte auf einem Framework zugreifen, braucht komplexe Sonderfunktionen (z.B. Buddypress) oder möchte einfach die zusätzliche Eingabefelder vom OptionsTree haben. Es gibt die Möglichkeit Plugins einfach in das Theme zu integrieren, dies macht aber das Theme und die […]

Google Captcha mit PHP als Spam-Schutz für Formulare nutzen | Johannes Ulrich Gehrke

Google Captcha mit PHP als Spam-Schutz für Formulare nutzen

Captchas bieten Hilfe gegen Spam – Als Seitenbetreiber kennt man es, wenn man ein Kontakt-Formular oder ähnliches hat, dass nach einer Weile Spam-Bots auf die Seite gelangen. Diese Bots tragen meist irgendwelche Daten in das Formular ein, probieren Sicherheitslücken zu finden oder wollen einfach Website-Links spamen. Um das zu unterbinden bieten verschiedene Dienstleister Captchas an. […]

jQuery(function() { /* onReady */
	var $ = jQuery; 

	// 16:9 ( Spielfilm-Format [ Hany, Laptop, etc auch] )
	$( '.video_player_wrapper iframe' ).lh_resize_videoplayer();
	
	// 21:9 ( Kino-Format )
	$( '.video_player_wrapper iframe' ).lh_resize_videoplayer( { 'width' : 21 } );
	
	// 4:3 ( Foto-Format )
	$( '.video_player_wrapper iframe' ).lh_resize_videoplayer( { 'width' : 4, 'height' : 3 } );
	
	// Finde Youtube-Player Iframes
	$( 'iframe[src^=\'https://www.youtube/\']' ).lh_resize_videoplayer();
	
});

Responsive Youtube Player für das Theme per jQuery

Videoplayer auf Website sind immer bisschen anstrengend – Sie sind einfach nicht so super einfach einbaubar wie Bilder. Der Youtube Player, den man per Embed-Code zum Beispiel bekommt liegt in einem Iframe. Diesen kann man mit max-width:100% zwar anpassen, dass immer die Container-Breite einfängt, jedoch zerstört es dann oft das Seitenverhältnis. Es gibt bisher keine […]


Warning: Undefined array key 0 in /var/www/vhosts/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/httpdocs/wordpress/wp-content/themes/johannes2017/lib/get-options.php on line 37
<?php

/*
 *  SEITENNAVIGATION MIT SEITENZAHLEN
 *
 *  Gibt einen HTML Strink zurück mit Seitenzahlen als Links
 *  in einem DIV-Wrapper 
 */
function jg_pagination_numbered( $is_nofollow = false ) {
	global $wp_query;

	/*
	 *  TEMPLATES
	 */
	$tpl_item = "
		<a href=\"%URL%\" class=\"f-pagination__page-item %ACTIVE%\" %NOFOLLOW% >%NUMBER%</a>
	 
	";

	$nofollow     = " rel=\"nofollow\" ";
	$class_active = " active ";

	/*
	 *  GET DATA
	 */
	$max_pages      = $wp_query->max_num_pages;
	// Aktuelle Seite: Seite 0 = Seite 1
	$current_page   = ( $wp_query->query_vars['paged'] ) ? $wp_query->query_vars['paged'] : 1;
	
	// Schreibe alle Seiten auf ein Array
	$items = [];
	for ( $i=1; $i <= $max_pages ; $i++ ) { 
		$items[$i] = [
			'url'        => get_pagenum_link( $i, false ),
			'is_current' => ( $i == $current_page ) ? true : false,
		];
	};
	
	/*
	 *  BUILD HTML
	 */
	$items_html = "";
	foreach ( $items as $key => $item) {
		// Alle Items zu einem Item-HMTL-String zusammenfügen	
		$tpl_data = [
			'%NUMBER%'   => $key,
			'%URL%'      => $item['url'],
			'%ACTIVE%'   => ( $item['is_current'] ) ? " active " : "",
			'%NOFOLLOW%' => ( $is_nofollow ) ? $class_active : "",
		];
		$items_html .= strtr( $tpl_item, $tpl_data );
	};
	
	
	return $items_html;
	
};

Seitenzahlen-Navigation für WordPress

Für Besucher und für SEO ist es oft wichtig eine Seitenzahlen-Navigation zu haben. Damit ist es möglich über die Pagination direkt auf die Zielseite zu kommen. Und es hält für Google die Seitenhierarchie flach. WordPress ist traditionell eine Plattform zum Bloggen. Daher ist es nicht verwunderlich, dass die standard Navigation zum Blättern der Seiten nur […]

1 2