Wer auf den Einsatz von Permalink-Redirect nicht verzichten kann - und trotzdem eine Druck-Ansicht seiner Beiträge/Seiten zur Verfügung stellen möchte, kann dieses mit einer Änderung am PlugIn und einer Umwandlung der hier beschriebenen Bedingungen tun.

 

1) Man muss über die Druck-Ansicht-Links einen zusätzlichen Parameter weitergeben

Ich schlage vor, man benutzt dazu “print=yes”. Der Aufruf der Druck-Ansicht müsste dann folgendermaßen aussehen:


<?php if(is_page()) { ?>
<p><a href="<?php bloginfo('url') ?>/index.php?page_id=<?=the_ID()?>&amp;print=yes">Seite Drucken</a></p>
<?php } else { ?>
<p><a href="<?php bloginfo('url') ?>/index.php?p=<?=the_ID()?>&amp;print=yes">Seite Drucken</a></p>
<?php } ?>
	

 

2) Die Abfrage, ob es sich um eine “Druck-” oder eine “normale Ansicht” vereinfacht sich dadurch

Für die Druck-Ansicht:

<?php if (isset($_GET['print'])) { ?>
<!--
	Hier das rein, was bei der "Druck-Ansicht"
	angezeigt werden soll
-->
<?php } ?>

beziehungsweise für den umgekehrten Fall:

<?php if (!isset($_GET['print'])){ ?>
<!--
	Hier das rein, was bei der "normalen Ansicht"
	angezeigt werden soll. Zum Beispiel der Link
	zur "Drucken"-Seite
-->
<?php } ?>

 

3) Änderung am PlugIn “Permalink-Redirect”

In der Datei “ylsy_permalink_redirect.php” muss die Funktion execute() bearbeitet werden. Diese findet sich in den Zeilen 42 bis 60:


function execute() {
	$requested = parse_url($_SERVER['REQUEST_URI']);
	$requested = $requested['path'];

	if (is_404() || is_feed() || is_trackback() || is_search() ||
		is_comments_popup() || YLSY_PermalinkRedirect::is_skip($requested))
		return;

	$link = YLSY_PermalinkRedirect::guess_permalink();
	if (!$link)
		return;
	$permalink = parse_url($link);
	if ($requested != $permalink['path']) {
		header('HTTP/1.1 301 Moved Permanently');
		header('Status: 301 Moved Permanently');
		header("Location: $link");
		exit(0);
	}
}
	

Wir erweitern die Funktion um eine Abfrage, ob der Parameter $_GET[’print’] gesetzt ist. Wenn er nicht gesetzt ist, soll “execute” ausgeführt werden. Nach der Änderung sieht die Funktion folgendermaßen aus:


function execute() {
	if (!isset($_GET['print'])) {
		$requested = parse_url($_SERVER['REQUEST_URI']);
		$requested = $requested['path'];

		if (is_404() || is_feed() || is_trackback() || is_search() ||
			is_comments_popup() || YLSY_PermalinkRedirect::is_skip($requested))
			return;

		$link = YLSY_PermalinkRedirect::guess_permalink();
		if (!$link)
			return;
		$permalink = parse_url($link);
		if ($requested != $permalink['path']) {
			header('HTTP/1.1 301 Moved Permanently');
			header('Status: 301 Moved Permanently');
			header("Location: $link");
			exit(0);
		}
	}
}
	

Auf diese Weise funktioniert die automatische Weiterleitung auf Permalinks weiterhin, während die Druck-Ansicht davon unberührt bleibt.