WP-PostViews Plus: array_key_exists-Funktion macht Probleme nach Update

WP-PostViews Plus: array_key_exists-Funktion macht Probleme nach Update

Nach dem letzten Update des WP-PostViews Plus-Plugins (habe wohl zu spät gesehen, daß die Dokumentation nur in Chinesisch vorhanden ist..) erhielt ich folgenden Fehler anstelle der gewünschten Anzahl der Besuche einer Seite:

1
2
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in
/home/content/abc/html/wp-content/plugins/wp-postviews-plus/postviews_plus.php on line 96

Mit meinen beschränkten PHP-Kenntnissen (eigentlich alle nur von der Pflege der WordPress-Installation hier, wenn ich frühe Eskapaden einmal ausblende) habe ich mir folgende Lösung zusammengebastelt.

In dem Plugins-Verzeichnis geht man auf das Plugin und wählt „Bearbeiten” aus. Dann ersetzt man die Funktion, die Ärger gemacht hat (hier stammt die Idee her):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function should_views_be_displayed($views_options = null) {
	if( $views_options == null ) {
		$views_options = get_option('PVP_options');
	}
	$display_option = 0;
	if( is_home() ) {
		if( array_key_exists('display_home', $views_options) ) {
			$display_option = $views_options['display_home'];
		}
	} elseif( is_single() ) {
		if( array_key_exists('display_single', $views_options) ) {
			$display_option = $views_options['display_single'];
		}
	} elseif( is_page() ) {
		if( array_key_exists('display_page', $views_options) ) {
			$display_option = $views_options['display_page'];
		}
	} elseif( is_archive() ) {
		if( array_key_exists('display_archive', $views_options) ) {
			$display_option = $views_options['display_archive'];
		}
	} elseif( is_search() ) {
		if( array_key_exists('display_search', $views_options) ) {
			$display_option = $views_options['display_search'];
		}
	} else {
		if( array_key_exists('display_other', $views_options)) {
			$display_option = $views_options['display_other'];
		}
	}
	return (($display_option == 0) || (($display_option == 1) && is_user_logged_in()));
}

durch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function should_views_be_displayed($views_options = null) {
	if( $views_options == null ) {
		$views_options = get_option('PVP_options');
	}
	$display_option = 0;
	if( is_home() ) {
		if( isset($views_options['display_home']) ) {
			$display_option = $views_options['display_home'];
		}
	} elseif( is_single() ) {
		if( isset($views_options['display_single']) ) {
			$display_option = $views_options['display_single'];
		}
	} elseif( is_page() ) {
		if( isset($views_options['display_page']) ) {
			$display_option = $views_options['display_page'];
		}
	} elseif( is_archive() ) {
		if( isset($views_options['display_archive']) ) {
			$display_option = $views_options['display_archive'];
		}
	} elseif( is_search() ) {
		if( isset($views_options['display_search']) ) {
			$display_option = $views_options['display_search'];
		}
	} else {
		if( isset($views_options['display_other'])) {
			$display_option = $views_options['display_other'];
		}
	}
	return (($display_option == 0) || (($display_option == 1) && is_user_logged_in()));
}

Danach ist wieder alles gut. Geht man wieder zum Original zurück, ist weiterhin alles gut. Nun.. wie gesagt, mit PHP kenne ich mich nicht so gut aus wie z. B. mit den C Dialekten.. da gilt bei mir (wenn ich am Blog bastele) dann eher: Hauptsache, es funktioniert.
Und im Zweifelsfall konzentriere ich mich dann erstmal darauf, ein guter Anwendungs-Entwickler zu sein, bevor ich (zumindest anfangs) ein mittelmäßiger Web-Entwickler werde.
Vielleicht lerne ich irgendwann mal, woran genau es lag.. vermutlich ein falscher Variablentyp? Warum gibt es keine explizite Typisierung? Fragen über Fragen..

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.