WordPress – individueller Footer pro Seite für das Twenty Ten Child Theme

Neulich hatte ich das Problem, dass ich für eine WordPress Installation basierend auf WordPress 3.4.2 mit einem Twenty Ten Child-Theme für eine Seite einen anderen Footer brauchte, und zwar genauso einen wie den Standard Footer, also mit allen vier Widget Bereichen. Das Ganze ist eigentlich recht simpel, da ich aber im Netz nichts Brauchbares gefunden habe, dachte ich, ich schreib es kurz auf, vielleicht hilft es ja dem einen oder anderen.

SO GEHT’S:
Wir brauchen 3 Dateien aus dem Verzeichnis des “Eltern” Themes (hier: twentyten):

  1. page.php oder onecolumn-page-php
  2. footer.php
  3. sidebar-footer.php

SCHRITT 1: EIN CUSTOM PAGE TEMPLATE ERSTELLEN
Dafür müssen wir uns zuerst überlegen, ob wir eine Seite mit oder ohne Sidebar wollen. Ich will eine Seite ohne Sidebar, also nehme ich die Datei onecolumn-page.php, kopiere sie in den Child-Theme Ordner und benenne sie in onecolum-page-xyz.php um. Dabei ist “xyz” ein nahezu frei wählbarer Name (bis auf diese hier). Möchte man eine Sidebar nimmt man das page.php Template.

Jetzt öffnen wir das onecolum-page-xyz.php Template und geben ihm einen Namen:

1
2
3
4
5
6
<?php
 /**
*
Template Name: XYZ Template
*
*/

und ändern die letzte Zeile von:

31
<?php get_footer(); ?>

in:

31
<?php get_footer('xyz'); ?>

 

SCHRITT 2: DIE ANDEREN DATEIEN RÜBERKOPIEREN UND UMBENENNEN

  • die footer.php kopieren und in: footer-xyz.php umbenennen
  • die sidebar-footer.php kopieren und in sidebar-footer-xyz.php umbennen

Jetzt öffnen wir die footer-xyz.php, suchen nach get_sidebar(‘footer’) und ändern es in get-sidebar(‘footer-xyz’).

Dann öffnen wir die sidebar-footer-xyz.php und ändern die Einträge für die vier Widget Areas. Wir suchen nach first-footer-widget-area, second-footer-widget-area usw. und fügen vorne ein xyz- ein, so dass es ungefähr so aussieht: xyz-first-footer-widget-area.

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
	/* The footer widget area is triggered if any of the areas
	 * have widgets. So let's check that first.
	 *
	 * If none of the sidebars have widgets, then let's bail early.
	 */
	if (   ! is_active_sidebar( 'xyz-first-footer-widget-area'  )
		&& ! is_active_sidebar( 'xyz-second-footer-widget-area' )
		&& ! is_active_sidebar( 'xyz-third-footer-widget-area'  )
		&& ! is_active_sidebar( 'xyz-fourth-footer-widget-area' )
	)
		return;
	// If we get this far, we have widgets. Let do this.
?>
 
			<div id="footer-widget-area" role="complementary">
 
<?php if ( is_active_sidebar( 'xyz-first-footer-widget-area' ) ) : ?>
				<div id="first" class="widget-area">
					<ul class="xoxo">
						<?php dynamic_sidebar( 'xyz-first-footer-widget-area' ); ?>
					</ul>
				</div><!-- #first .widget-area -->
<?php endif; ?>
 
<?php if ( is_active_sidebar( 'xyz-second-footer-widget-area' ) ) : ?>
				<div id="second" class="widget-area">
					<ul class="xoxo">
						<?php dynamic_sidebar( 'xyz-second-footer-widget-area' ); ?>
					</ul>
				</div><!-- #second .widget-area -->
<?php endif; ?>
 
<?php if ( is_active_sidebar( 'xyz-third-footer-widget-area' ) ) : ?>
				<div id="third" class="widget-area">
					<ul class="xoxo">
						<?php dynamic_sidebar( 'xyz-third-footer-widget-area' ); ?>
					</ul>
				</div><!-- #third .widget-area -->
<?php endif; ?>
 
<?php if ( is_active_sidebar( 'xyz-fourth-footer-widget-area' ) ) : ?>
				<div id="fourth" class="widget-area">
					<ul class="xoxo">
						<?php dynamic_sidebar( 'xyz-fourth-footer-widget-area' ); ?>
					</ul>
				</div><!-- #fourth .widget-area -->
<?php endif; ?>

 

SCHRITT 3: DIE NEUEN WIDGETS REGISTRIEREN
Nun müssen die Widget Areas registriert werden damit sie im WordPress Backend erscheinen und mit Widgets konfiguriert werden können. Das erreichen wir, indem wir der functions.php des Child-Themes eine neue Funktion hinzufügen. Wenn das Child-Theme noch keine functions.php hat, dann erstellen wir eine.

Dann kopieren wir Zeile 378 – 446 von der Twenty Ten functions.php und fügen sie in die functions.php des Child-Themes ein.

Hier ist der Code:

369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
/**
 * Register widgetized areas, including two sidebars and four widget-ready columns in the footer.
 *
 * To override twentyten_widgets_init() in a child theme, remove the action hook and add your own
 * function tied to the init hook.
 *
 * @since Twenty Ten 1.0
 * @uses register_sidebar
 */
function twentyten_widgets_init() {
	// Area 1, located at the top of the sidebar.
	register_sidebar( array(
		'name' => __( 'Primary Widget Area', 'twentyten' ),
		'id' => 'primary-widget-area',
		'description' => __( 'The primary widget area', 'twentyten' ),
		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
 
	// Area 2, located below the Primary Widget Area in the sidebar. Empty by default.
	register_sidebar( array(
		'name' => __( 'Secondary Widget Area', 'twentyten' ),
		'id' => 'secondary-widget-area',
		'description' => __( 'The secondary widget area', 'twentyten' ),
		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
 
	// Area 3, located in the footer. Empty by default.
	register_sidebar( array(
		'name' => __( 'First Footer Widget Area', 'twentyten' ),
		'id' => 'first-footer-widget-area',
		'description' => __( 'The first footer widget area', 'twentyten' ),
		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
 
	// Area 4, located in the footer. Empty by default.
	register_sidebar( array(
		'name' => __( 'Second Footer Widget Area', 'twentyten' ),
		'id' => 'second-footer-widget-area',
		'description' => __( 'The second footer widget area', 'twentyten' ),
		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
 
	// Area 5, located in the footer. Empty by default.
	register_sidebar( array(
		'name' => __( 'Third Footer Widget Area', 'twentyten' ),
		'id' => 'third-footer-widget-area',
		'description' => __( 'The third footer widget area', 'twentyten' ),
		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
 
	// Area 6, located in the footer. Empty by default.
	register_sidebar( array(
		'name' => __( 'Fourth Footer Widget Area', 'twentyten' ),
		'id' => 'fourth-footer-widget-area',
		'description' => __( 'The fourth footer widget area', 'twentyten' ),
		'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h3 class="widget-title">',
		'after_title' => '</h3>',
	) );
}
/** Register sidebars by running twentyten_widgets_init() on the widgets_init hook. */
add_action( 'widgets_init', 'twentyten_widgets_init' );

Am Anfang und Ende des Block sehen wir eine Funktion mit dem Namen: twentyten_widgets_init. Wir benennen sie um in: xyz-twentyten_widgets_init.

 

LETZTER SCHRITT: DIE WIDGET AREA IDS ABGLEICHEN
so dass sie gleich sind mit den Einträgen in der sidebar-footer-xyz.php. Wegen des guten Stils ändern wir die Namen und Beschreibungen auch. Von:

1
2
3
'name' => __( 'Primary Widget Area', 'twentyten' ),
'id' => 'primary-widget-area',
'description' => __( 'The primary widget area', 'twentyten' ),

in:

1
2
3
'name' => __( 'XYZ Primary Widget Area', 'twentyten' ),
'id' => 'xyz-primary-widget-area',
'description' => __( 'The primary XYZ widget area', 'twentyten' ),

 

Herzlichen Glückwunsch, wir sind fertig!
Wenn wir alles richtig und vor allem keine Schreibfehler gemacht haben, sehen wir nun 4 weitere Widget Areas in unserem Backend, und, nachdem wir sie mit Widgets bestückt haben, einen anderen Footer auf der Seite unserer Wahl!

Die Vorgehensweise ist ziemlich identisch für andere moderne WordPress Themes und funktioniert genauso wenn man auf ein Child-Theme verzichtet (allerdings macht es meistens Sinn eins zu verwenden). Für das Twentyeleven Theme sollten es so ähnlich funktionieren, allerdings ist es komplizierter ein Custom Page Template zu erstellen. Eine Suche im Internet hilft …

Anmerkung:
Voraussetzung für das Tutorial ist ein Grundverständnis in Webentwicklung, hierbei besonders WordPress, kennen der Werkzeuge und das Wissen wie man mit ihnen arbeitet. Weiterhin sollte das Konzept von Child Themes und der Umgang damit ebenfalls bekannt sein. Eigentlich sollte ich es nicht erwähnen müssen, aber zuvor ein Backup der Theme-Dateien zu machen ist sicher auch keine schlechte Idee.

Hinterlasse eine Antwort

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

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam