Advertisement
  1. Web Design
  2. WordPress

Menambahkan Empat Area Widget Footer Secara Dinamis

Scroll to top
Read Time: 10 min

() translation by (you can also view the original English article)

Hari-hari ini, banyak tema WordPress memiliki sejumlah area widget di footer, yang berarti Anda dapat membuat "footer gemuk" dengan beberapa area widget berdampingan. Ini adalah sesuatu yang saya gunakan di semua tema saya.

Tetapi bagaimana jika tema Anda memiliki empat area widget tetapi Anda hanya ingin tiga widget? Jika Anda tidak berhati-hati, Anda akan berakhir dengan celah jelek di sisi kanan tempat area widget keempat kosong.

Dalam tutorial ini saya akan menunjukkan kepada Anda bagaimana menghindari ini menggunakan kombinasi tag kondisional dalam PHP dan beberapa Object-Oriented CSS (OOCSS), yang akan memeriksa berapa banyak area widget yang telah Anda isi dan secara otomatis mengubah ukurannya sehingga masing-masing mengambil proporsi yang tepat dari lebar halaman.

Apa yang Akan Anda Butuhkan

Untuk mengikuti tutorial ini, Anda akan membutuhkan:

  • instalasi pengembangan WordPress
  • tema Anda sendiri yang akan Anda tambahkan kodenya
  • sebuah editor kode

Mendaftarkan Area Widget

Langkah pertama adalah mendaftarkan empat area widget untuk footer Anda. Jika Anda belum memiliki area widget terdaftar, Anda harus menambahkan kode ini ke file functions.php Anda:

1
function tutsplus_widgets_init() {
2
3
    // First footer widget area, located in the footer. Empty by default.

4
  register_sidebar( array(
5
		'name' => __( 'First Footer Widget Area', 'tutsplus' ),
6
		'id' => 'first-footer-widget-area',
7
		'description' => __( 'The first footer widget area', 'tutsplus' ),
8
		'before_widget' => '<div id="%1$s" class="widget-container %2$s">',
9
		'after_widget' => '</div>',
10
		'before_title' => '<h3 class="widget-title">',
11
		'after_title' => '</h3>',
12
	) );
13
14
	// Second Footer Widget Area, located in the footer. Empty by default.

15
	register_sidebar( array(
16
		'name' => __( 'Second Footer Widget Area', 'tutsplus' ),
17
		'id' => 'second-footer-widget-area',
18
		'description' => __( 'The second footer widget area', 'tutsplus' ),
19
		'before_widget' => '<div id="%1$s" class="widget-container %2$s">',
20
		'after_widget' => '</div>',
21
		'before_title' => '<h3 class="widget-title">',
22
		'after_title' => '</h3>',
23
	) );
24
25
	// Third Footer Widget Area, located in the footer. Empty by default.

26
	register_sidebar( array(
27
		'name' => __( 'Third Footer Widget Area', 'tutsplus' ),
28
		'id' => 'third-footer-widget-area',
29
		'description' => __( 'The third footer widget area', 'tutsplus' ),
30
		'before_widget' => '<div id="%1$s" class="widget-container %2$s">',
31
		'after_widget' => '</div>',
32
		'before_title' => '<h3 class="widget-title">',
33
		'after_title' => '</h3>',
34
	) );
35
36
	// Fourth Footer Widget Area, located in the footer. Empty by default.

37
	register_sidebar( array(
38
		'name' => __( 'Fourth Footer Widget Area', 'tutsplus' ),
39
		'id' => 'fourth-footer-widget-area',
40
		'description' => __( 'The fourth footer widget area', 'tutsplus' ),
41
		'before_widget' => '<div id="%1$s" class="widget-container %2$s">',
42
		'after_widget' => '</div>',
43
		'before_title' => '<h3 class="widget-title">',
44
		'after_title' => '</h3>',
45
	) );
46
		
47
}
48
49
// Register sidebars by running tutsplus_widgets_init() on the widgets_init hook.

50
add_action( 'widgets_init', 'tutsplus_widgets_init' );

Ini akan menambahkan empat area widget footer ke tema Anda. Jika Anda melihat layar Widgets, Anda akan melihat semuanya di sana, bersama dengan yang lain yang sudah Anda daftarkan:

Menambahkan Area Widget ke Tema Anda

Jika Anda menambahkan widget ke area widget tersebut sekarang, tidak akan ada yang terjadi. Anda perlu menambahkannya ke footer tema Anda. Saya akan bekerja melalui kode yang perlu Anda tambahkan ke file footer Anda secara bertahap, menambahkan lebih banyak pemeriksaan untuk berbagai jumlah area widget yang terisi saat kita berjalan.

Perhatikan bahwa Anda mungkin perlu mengubah beberapa kelas dan elemen yang berisi kode area widget sesuai dengan struktur dan tata letak tema Anda.

1. Memeriksa Apakah Tidak Ada Area Widget yang Diisi

Langkah pertama adalah memeriksa apakah tidak ada area widget yang diisi, yang mana tidak ada yang harus ditampilkan. Buka file footer.php tema Anda dan tambahkan kode di bawah ini.

1
<footer>
2
3
    <?php
4
	/* The footer widget area is triggered if any of the areas

5
	 * have widgets. So let's check that first.

6
	 *

7
	 * If none of the sidebars have widgets, then let's bail early.

8
	 */
9
	if (   ! is_active_sidebar( 'first-footer-widget-area'  )
10
		&& ! is_active_sidebar( 'second-footer-widget-area' )
11
		&& ! is_active_sidebar( 'third-footer-widget-area'  )
12
		&& ! is_active_sidebar( 'fourth-footer-widget-area' )
13
	)
14
		return;
15
16
	//end of all sidebar checks.

17
	endif;?>
18
		
19
</footer>

2. Memeriksa apakah Semua Area Widget Diisi

Selanjutnya, saya akan memeriksa apakah semua area widget sudah diisi. Jika ini kasusnya, tema akan menampilkan isi dari keempatnya, dengan masing-masing float di samping satu sama lain dan mengambil seperempat lebar layar. Saya akan menambahkan kelas untuk ini di sini, tetapi menambahkan CSS ke stylesheet saya nanti.

Setelah pembacaan baris return; tetapi sebelum endif; pernyataan dalam kode yang baru saja Anda tambahkan, tambahkan ini:

1
if (   is_active_sidebar( 'first-footer-widget-area'  )
2
    && is_active_sidebar( 'second-footer-widget-area' )
3
	&& is_active_sidebar( 'third-footer-widget-area'  )
4
	&& is_active_sidebar( 'fourth-footer-widget-area' )
5
) :	?>
6
7
<aside class="fatfooter" role="complementary">
8
	<div class="first quarter left widget-area">
9
		<?php dynamic_sidebar( 'first-footer-widget-area' ); ?>
10
	</div><!-- .first .widget-area -->
11
12
	<div class="second quarter widget-area">
13
		<?php dynamic_sidebar( 'second-footer-widget-area' ); ?>
14
	</div><!-- .second .widget-area -->
15
16
	<div class="third quarter widget-area">
17
		<?php dynamic_sidebar( 'third-footer-widget-area' ); ?>
18
	</div><!-- .third .widget-area -->
19
20
	<div class="fourth quarter right widget-area">
21
		<?php dynamic_sidebar( 'fourth-footer-widget-area' ); ?>
22
	</div><!-- .fourth .widget-area -->
23
</aside><!-- #fatfooter -->

Ini melakukan hal berikut:

  • Memeriksa bahwa semua area widget footer diisi menggunakan tag if.
  • Jika demikian, buka elemen baru yang disebut <aside class = "fatfooter">. Elemen tambahan ini yang berisi area widget memungkinkan seluruh footer untuk berpusat pada halaman bahkan jika footer itu sendiri tidak (misalnya jika keseluruhan footer memiliki latar belakang yang lebar).
  • Tampilkan keempat area widget menggunakan fungsi dynamic_sidebar(), memberikan masing-masing ini kelas untuk tata letak.

Kelas-kelasnya adalah .left.quarter untuk sebagian besar area widget, kecuali yang terakhir yang memiliki .right.quarter.

3. Memeriksa Apakah Hanya Tiga Area Widget yang Diisi

Langkah selanjutnya adalah menambahkan kode untuk menampilkan area widget jika hanya tiga dari mereka yang diisi. Di bawah kode yang baru saja Anda tambahkan, masukkan yang berikut:

1
<?php 
2
elseif ( is_active_sidebar( 'first-footer-widget-area'  )
3
    && is_active_sidebar( 'second-footer-widget-area' )
4
	&& is_active_sidebar( 'third-footer-widget-area'  )
5
	&& ! is_active_sidebar( 'fourth-footer-widget-area' )
6
) : ?>
7
<aside class="fatfooter" role="complementary">
8
	<div class="first one-third left widget-area">
9
		<?php dynamic_sidebar( 'first-footer-widget-area' ); ?>
10
	</div><!-- .first .widget-area -->
11
12
	<div class="second one-third widget-area">
13
		<?php dynamic_sidebar( 'second-footer-widget-area' ); ?>
14
	</div><!-- .second .widget-area -->
15
16
	<div class="third one-third right widget-area">
17
		<?php dynamic_sidebar( 'third-footer-widget-area' ); ?>
18
	</div><!-- .third .widget-area -->
19
20
</aside><!-- #fatfooter -->

Ini memeriksa apakah tiga area widget pertama diisi dan yang keempat tidak, dan kemudian menampilkan tiga yang pertama menggunakan kelas yang sesuai—menggantikan .quarter dengan .one-third.

Perhatikan bahwa ketika Anda mengisi area widget Anda, Anda selalu perlu kehilangan yang terakhir jika Anda tidak ingin menggunakannya semuanya, atau pemeriksaan ini tidak akan berfungsi. Jangan biarkan yang pertama kosong dan mengisi yang kemudian.

4. Memeriksa Apakah Hanya Dua Area Widget yang Diisi

Untuk menghasilkan hanya dua area widget jika sudah diisi dan yang ketiga dan keempat belum, tambahkan kode ini di bawah kode yang baru saja Anda tambahkan:

1
<?php
2
elseif ( is_active_sidebar( 'first-footer-widget-area'  )
3
    && is_active_sidebar( 'second-footer-widget-area' )
4
	&& ! is_active_sidebar( 'third-footer-widget-area'  )
5
	&& ! is_active_sidebar( 'fourth-footer-widget-area' )
6
) : ?>
7
<aside class="fatfooter" role="complementary">
8
	<div class="first half left widget-area">
9
		<?php dynamic_sidebar( 'first-footer-widget-area' ); ?>
10
	</div><!-- .first .widget-area -->
11
12
	<div class="second half right widget-area">
13
		<?php dynamic_sidebar( 'second-footer-widget-area' ); ?>
14
	</div><!-- .second .widget-area -->
15
16
</aside><!-- #fatfooter -->

Ini bekerja dengan cara yang mirip dengan dua cuplikan kode sebelumnya, menggunakan kelas .half untuk tata letak.

5. Memeriksa apakah Hanya Satu Area Widget yang Diisi

Pemeriksaan terakhir hanya untuk area widget pertama yang diisi. Tambahkan ini di bawah kode yang baru saja Anda tambahkan:

1
<?php
2
elseif ( is_active_sidebar( 'first-footer-widget-area'  )
3
    && ! is_active_sidebar( 'second-footer-widget-area' )
4
	&& ! is_active_sidebar( 'third-footer-widget-area'  )
5
	&& ! is_active_sidebar( 'fourth-footer-widget-area' )
6
) :
7
?>
8
<aside class="fatfooter" role="complementary">
9
	<div class="first full-width widget-area">
10
		<?php dynamic_sidebar( 'first-footer-widget-area' ); ?>
11
	</div><!-- .first .widget-area -->
12
13
</aside><!-- #fatfooter -->

Ini akan menampilkan satu konten area widget dalam elemen full-width.

Sekarang simpan file footer.php Anda.

Menambahkan CSS

Saat ini area widget Anda tidak akan berfungsi dengan benar—pada kenyataannya, jika Anda mengisi semuanya, mereka akan muncul satu di bawah yang lain dengan lebar penuh. Jadi Anda perlu menambahkan beberapa OOCSS untuk membuat kelas tata letak tersebut berfungsi. OOCSS yang saya tambahkan responsif, jadi saya telah menyertakan media queries untuk mengubah ukuran area widget footer di layar kecil.

1. Menambahkan Floats

Pertama mari kita pastikan area widget float berdampingan.

Buka file style.css tema Anda dan tambahkan kode ini:

1
/* floats */
2
.quarter,
3
.one-third,
4
.two-thirds,
5
.half {
6
    float: left;
7
}

2. Menambahkan Lebar

Lebar akan memastikan bahwa semua area widget mengambil proporsi yang benar dari layar. Saya menggunakan persentase karena membuat kode lebih fleksibel dan responsif. Tambahkan ini ke stylesheet Anda:

1
/* widths */
2
.one-third {
3
    width: 32%;
4
}
5
.two-thirds {
6
	width: 65.5%;
7
}
8
.quarter {
9
	width: 23.5%;
10
}
11
.three-quarters {
12
	width: 74.5%;
13
}
14
.half {
15
	width: 48%;
16
}

Perhatikan bahwa lebar tidak menambahkan hingga 100% karena ruang perlu diizinkan untuk margin.

3. Menambahkan Margin

Sekarang tambahkan penataan untuk margin ke stylesheet Anda:

1
/* margins  */
2
.one-third {
3
    margin: 0 0.5%;
4
}
5
.quarter,
6
.two-thirds {
7
	margin: 0 0.5%;
8
}
9
.left,
10
.quarter.left,
11
.one-third.left {
12
	margin: 0 1% 0 0;
13
	float: left;
14
}
15
.right,
16
.quarter.right,
17
.one-third.right {
18
	margin: 0 0 0 1%;
19
	float: right;
20
}
21
.half.left {
22
	width: 48%;
23
	margin: 0 2% 0 0;
24
}
25
.half.right {
26
	width: 48%;
27
	margin: 0 0 0 2%;
28
}
29
.two-thirds.left {
30
	margin: 0 1% 0 0;
31
}
32
.two-thirds.right {
33
	margin: 0 0 0 1%;
34
	float: right;
35
}

Perhatikan bahwa margin berbeda untuk elemen yang juga memiliki kelas .right atau .left yang diterapkan pada mereka, sehingga mereka duduk rata di tepi elemen yang mengandungnya.

4. Menambahkan Media Queries

Media queries akan melakukan dua hal:

  • Pada layar kecil seperti tablet, empat elemen akan muncul dalam grid dua kali dua, yang berarti bahwa elemen dengan kelas .quarter akan memiliki setengah lebar dan margin akan disesuaikan.
  • Pada layar yang sangat kecil seperti smartphone, semua elemen akan memiliki lebar penuh.

Tambahkan media queries di bagian bawah stylesheet Anda bersama dengan media queries lainnya yang mungkin Anda miliki:

1
/* media queries for larger screens such as small tablets in landscape or large tablets in portrait */
2
@media screen and ( max-width: 780px ) {
3
    
4
	/* only the .quarter layout class is relevant here - all other classes will have full width */
5
	.quarter {
6
		width: 48%;
7
	}
8
	.quarter.left {
9
		margin-right: 2%;
10
	}
11
	.quarter.right {
12
		margin-left: 2%;
13
	}
14
	footer .third.quarter.widget-area {
15
		clear: both;
16
	}
17
}
18
19
/* media queries for small screens in landscape mode (or similar) */
20
@media screen and ( max-width: 600px ) {
21
	
22
	/* width sizing all full width in small screens */
23
	.quarter,
24
	.one-third,
25
	.half,
26
	.two-thirds,
27
	.three-quarters,
28
	.full-width {
29
		width: 100%;
30
		margin: 0;
31
	}
32
	/* padding adjustments */
33
	.widget-area {
34
		padding: 0 0 10px 0;
35
	}
36
}

Sekarang simpan stylesheet Anda.

Menguji Kode Anda

Sekarang saatnya untuk melihat apa yang terjadi ketika Anda mengisi area widget Anda.

Di bawah ini adalah tangkapan layar dari situs yang saya kelola yang menggunakan kode ini. Biasanya footer memiliki empat area widget:

Footer with four widget areasFooter with four widget areasFooter with four widget areas

Jika saya menghapus widget dari area widget keempat, hanya tiga yang ditampilkan, dengan lebar yang sama:

Footer with three widget areasFooter with three widget areasFooter with three widget areas

Dan jika saya menghapus widget dari area widget ketiga, pengunjung akan melihat dua area widget masing-masing mengambil setengah dari lebar:

Footer with two widget areasFooter with two widget areasFooter with two widget areas

Ringkasan

Teknik ini berguna jika Anda ingin tema Anda untuk memungkinkan berisi beberapa area widget footer tetapi Anda tidak tahu berapa banyak dari area widget yang benar-benar akan digunakan.

Jika Anda membuat sebuah kerangka kerja, tema starter, atau tema yang akan digunakan orang lain untuk situs mereka, itu dapat membantu membuat tata letak footer lebih rapi dan menghemat pekerjaan ekstra pada baris yang menambahkan tata letak CSS.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.