therapiekind
Threadersteller
Dabei seit: 14.03.2006
Ort: In deinem Kopf
Alter: -
Geschlecht: -
|
Verfasst Do 04.06.2009 22:43
Titel WordPress - ID für Menüelement aus Custom Fields [gelöst] |
|
|
Grüezi alle,
muss mich leider und trotz intensivster Ablehnung mit WordPress auseinandersetzen und ein Layout in dieses irrsinnig undurchsichtige Teil bringen.
Ich habe im Kopfbereich ein Menü, das die statischen Seiten anzeigt. Jetzt hätte ich gerne jedem der Listenelemente eine ID verpasst, die ich in den "Custom Fields" der jeweiligen Seite festlege. Ist das möglich ohne im WP-Kern etwas abzuändern. Habe versucht, in der Funktion wp_page_menu() bzw. wp_list_pages() mit get_post_meta() rumzuspielen; natürlich ohne Erfolg.
Falls es keine saubere Lösung gibt, sind Vorschläge, die im Kern etwas ändern, natürlich gerne gesehen.
[gelöst]
Hab's letztendlich über 'ne eigene Funktion in der functions.php im Template gemacht. Die ursprüngliche Variante hierfür hatte ich irgendwo im Netz gefunden, find's leider nicht mehr.
Für Interessierte und die Nachwelt:
Code: | function nav_with_id()
{
global $wpdb;
$html = '<ul id="navigation">';
// Query the database for all top-level page IDs, and store them in the $menuPages array under the [ID] sub-array
$pages = $wpdb->get_results("SELECT ID FROM {$wpdb->posts} WHERE post_parent=0 AND post_type='page' AND post_status='publish' ORDER BY menu_order ASC");
// For each element in the $menuPages array, get the value from the [ID]-subarray to create the top-level menu and it's children
foreach($pages as $page)
{
if (strlen(get_post_meta($page->ID, 'hide_in_navigation', TRUE)) > 0)
{
continue;
}
$page_title = get_the_title($page->ID);
$page_permalink = get_permalink($page->ID);
if (isset($page_title))
{
if (strlen(get_post_meta($page->ID, 'id', TRUE)) > 0)
{
$html_id = ' id="' . get_post_meta($page->ID, 'id', TRUE) . '"';
}
else
{
$html_id = '';
}
$html .= '<li' . $html_id . '>'.PHP_EOL;
if (strlen(get_post_meta($page->ID, 'title', TRUE)) > 0)
{
$html_title = ' title="' . get_post_meta($page->ID, 'title', TRUE) . '"';
}
else
{
$html_title = '';
}
$html .= __('<a href="'.$page_permalink.'"' . $html_title . '>'.$page_title.'</a>'.PHP_EOL);
// Run wp_list_pages to fetch any children, and put the HTML <LI> list results into $page_children as a string
$page_children = wp_list_pages('title_li=&echo=0&depth=1&sort_column=menu_order&child_of='.$page->ID);
// If results were returned, $page_children is now a string with HTML in it, so create a drop-down and echo out the HTML
if($page_children){
$html .= '<ul>'.PHP_EOL;
$html .= $page_children . PHP_EOL;
$html .= '</ul>'.PHP_EOL;
}
// Otherwise, let's call it a day... err, end the loop.
$html .= '</li>'.PHP_EOL;
}
}
$html .= '</ul>';
echo $html;
} |
[/gelöst]
Zuletzt bearbeitet von therapiekind am Sa 06.06.2009 02:33, insgesamt 1-mal bearbeitet
|
|