Hallo in Runde,
ich möchte mir während der Entwicklung einer Seite innerhalb eines Themes in der Datei header.php Informationen ausgeben lassen.
Sinn und Zweck dieser Informationen soll sein, mich über den aktuellen Seiten-Namen, die ID und die Beziehung der Seite (z.B. zum Eltern-Dokument) zu informieren.
Ich habe dazu in einem meiner letzten Projekte ein kleines PHP-Script zusammen gebastelt, dass in dem Projekt auch einwandfrei funktionierte. Leider funktioniert es in keinem anderen Projekt.
Ich frage hier in die Runde, weil ich mir erhoffe, dass jemand den Fehler sieht oder Verbesserungs-Vorschläge hat, wie man genau diese Anzeige realisieren kann.
Hier der Code:
<?php
// es folgen INTERNE ADMIN-FUNKTIONEN - kein Layout oder Content
$postID = $post->ID;
// Einholen von Seiten-informationen
$check = TRUE; // TRUE = Ausgabe der Seiten-Informationen
if ($check) {
// ID des Elterndokuments holen (falls keine Elternelement vorhanden kommt immer ID der aktuellen Seite
$parentID = ($post->post_parent) ? $post->post_parent : $post->ID;
$parent_title = get_the_title($post->post_parent);
$pages = get_pages();
// Post Titel holen
$post_obj = $wp_query->get_queried_object();
$post_title = $post_obj->post_title;
$post_type = $post_obj->post_type;
if ($post_type == page) $post_type = 'Seite';
if ($post_type == post) $post_type = 'Beitrag';
// Infos über die Beziehung der Seite
if (is_tree($postID) && ($parentID != $postID)) $child_info = '<br />Parent: '.$parent_title.' ('.$parentID.')';
if ($page_children = get_page_children($post->ID, $pages)) $parent_info = '<br />hat Unterseiten';
// Abfrage nach aktuelle Benutzer und Rechten
require_once 'http://www.mywebsite.de/wp-config.php';
global $current_user;
get_currentuserinfo();
$level = $current_user->user_level;
$adminname = $current_user->user_login;
// wenn angemeldet und Admin
if (is_user_logged_in() && $level == "10"){
// AUSGABE VON SEITEN- & BENUTZER-INFORMATIONEN
echo '<div id="page-info"><strong>Benutzer-Informationen</strong>'.$adminname.' (Level: '.$level.')<br /><strong>Seiten-Informationen</strong>'.$post_title.' ('.$postID.')'.$parent_info.$child_info.'<br />'.$post_type;
edit_post_link('» bearbeiten',' ','');
echo '</div>';
}
};
// nur interessant, wenn man lokal auf dem Apache arbeitet
// Ausgabe Info wenn lokal
$host = $_SERVER['SERVER_ADDR'];
if ($host == '127.0.0.1') echo '<div id="lokal">@home</div>';
?>
Alles anzeigen
Hier der CSS-Code, der dafür sorgt, dass das Ganze auch ordentlich angezeigt wird:
/* Info zur lokalen Anwendung der Website */
#page-info {
position: fixed;
left: 6px;
top: 28px;
padding: 1px 6px 4px 7px;
font-size: 10px;
line-height: 12px;
font-family: tahoma;
color: #7F521B;
border: 1px solid #70E449;
background: #F1E9D5;
border-radius:6px;
-moz-border-radius:6px;
-webkit-border-radius:6px;
opacity:0.8;
}
#page-info strong {
display: block;
line-height: 150%;
}
#page-info a, #page-info a:visited{
text-decoration: none;
color: #436B2F;
}
/* nur interessant, wenn man lokal auf dem Apache arbeitet */
#lokal {
position: fixed;
left: 6px;
top: 7px;
padding: 2px 6px 3px 6px;
font-size: 10px;
line-height: 12px;
font-family: tahoma;
font-weight: bold;
color: #7F521B;
border: 1px solid #FF7A31;
background: #F1E9D5;
border-radius:6px;
-moz-border-radius:6px;
-webkit-border-radius:6px;
opacity:0.8;
}
Alles anzeigen
Das Ergebnis der Einbindung in meine Templates ist eine Seite, die nur soweit geladen wird, bis der von mir erstelle Code ausgeführt wird.
Ich habe schon versucht Teile davon zu löschen und heraus zu finden, welcher Code-Abschnitt den Abbruch verursacht. Es ist mir aber nicht gelungen, den Bereich zu identifizieren. Ich denke es liegt generell an der Vernwendung diverser Funktionen und DB-Abfragen, die hier benutzt werden.
Vielleicht gibt es an einigen Stellen auch einen besseren Weg um an die gewünschten Informationen zu kommen. Ich habe mir die verschiedene Abschnitte zusammen gesammelt und - wie gesagt - im ersten Projekt, bei dem ich diesen Code hier verwendet habe, funktioniert es auch.
Jeder Hinweis ist willkommen!
Herzliche Grüße,
Sebastian