Advertisement
  1. Code
  2. WordPress

Разработка Плагинов для Фреймворка Вашей WordPress Темы

Scroll to top
Read Time: 4 min
This post is part of a series called How Theme Frameworks Actually Work.
Creating Child Themes for Your WordPress Theme Framework
Releasing your WordPress Theme Framework

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

В предыдущих сериях я рассказала о том, как вы можете использовать дочерние темы для создания сайтов, используя фреймворк вашей темы. В этом уроке я расммотрю случаи для возможного создания плагинов вместо дочерних тем.

Когда Нужно Создать Плагин

Иногда сложно определить что использовать, плагин или файл functions.php вашей дочерней темы, когда нужно добавить функции сайту, который использует ваш фреймворк.

Прежде чем решить, я задаю себе следующие вопросы:

Это поможет вам решить, должны ли вы использовать файл функций вашей дочерней или родительской темы, плагин или вашу начальную дочернюю тему.

Если функции, которые вы добавите, содержат в себе много кода, будут эффективны для других пользователей или будут использованы на других сайтах, которые вы разработали, но не на всех, то создание плагина является наилучшей идеей.

Создание Ваших Плагинов

Если вы решили использовать плагин, тогда вы можете воспользоваться хуками, которые вы добавили вашему фреймворку, и сделать их более эффективными. Например:

  • Если ваш плагин добавляет иерархическую функциональность (хлебные крошки), вы можете прикрепить ее результат к хуку-действию wptp_above_content для отображения хлебных крошек наверху контента на каждой странице.+
  • Если ваш плагин создает более мощное или соответствующее поле для поиска, вы можете прикрепить его к хукам-действиям wptp_in_header или wptp_sidebar.
  • Плагин, создающий вызов к дейтсвию (как функция в предыдущем уроке, о дочерних темах), будет прикреплена к хукам wptp_sidebar или wptp_after_content.

Список продолжается!

Естественно, будут плагины, которые не будут использовать хуки вашего фреймворка, вместо этого будут активировать основные хуки WordPress, но ваши хуки дадут вам дополнительные опции.

Пример Плагина Навигации

Примером является плагин навигации, котоый я создала для использования вместе с моим фреймворком. Он активируется иолько на Страницах, и он сперва проверяет, где в иерархии находится данная страница. Если у Страницы есть дочерние или родительские Страницы, он показывает Страницу верхнего уровня в этой иерархии вместе со списком ее дочерних Страниц, давая вам местную навигацию.

Я использовала этот плагин на сайтах клиентов и прикрепляла его к хуку before_content или к хуку sidebar, или к обоим иногда, с дополнительными условными тегами.

Плагин использует две функции: первая, wptp_check_for_page_tree(), находит данную страницу в списке страниц:

1
function wptp_check_for_page_tree() {
2
3
//start by checking if we're on a page

4
    if( is_page() ) {
5
  
6
	    global $post;
7
	
8
	    // next check if the page has parents

9
	    if ( $post->post_parent ) {
10
		
11
		    // fetch the list of ancestors

12
		    $parents = array_reverse( get_post_ancestors( $post->ID ) );
13
			
14
		    // get the top level ancestor

15
		    return $parents[0];
16
			
17
		}
18
		
19
		// return the id  - this will be the topmost ancestor if there is one, or the current page if not

20
		return $post->ID;
21
		
22
	}
23
24
}

Следующая, wptp_list_subpages(), проверяет, если мы на странице (но не на главной странице), затем запускает функцию wptp_check_for_page_tree() и, основываясь на результате, отображает список страниц:

1
function wptp_list_subpages() {
2
3
// don't run on the main blog page

4
    if ( is_page() && ! is_home() ) {
5
6
	    // run the wptp_check_for_page_tree function to fetch top level page

7
	    $ancestor = wptp_check_for_page_tree();
8
9
	    // set the arguments for children of the ancestor page

10
	    $args = array(
11
		    'child_of' => $ancestor,
12
		    'depth' => '-1',
13
		    'title_li' => '',
14
	    );
15
		
16
	    // set a value for get_pages to check if it's empty

17
	    $list_pages = get_pages( $args );
18
		
19
	    // check if $list_pages has values

20
	    if ( $list_pages ) {
21
22
		    // open a list with the ancestor page at the top

23
			?>
24
		    <ul class="page-tree">
25
			    <?php // list ancestor page ?>

26
			    <li class="ancestor">
27
				    <a href="<?php echo get_permalink( $ancestor ); ?>"><?php echo get_the_title( $ancestor ); ?></a>
28
			    </li>
29
30
			    <?php
31
			    // use wp_list_pages to list subpages of ancestor or current page

32
			    wp_list_pages( $args );;
33
			
34
			    // close the page-tree list

35
			    ?>
36
			</ul>
37
38
		<?php
39
		}
40
	}
41
42
}

После инсталляции и активации плагина, вам нужно будет активировать его на вашей дочерней теме, для этого добавьте следующее в ваш файл functions.php:

1
add_action( 'wptp_sidebar', 'wptp_list_subpages' );

Конечно, вы можете использовать другой хук-действие, если хотите отобразить сисок в другом месте.

Заключение

Плагины являются частью экосистемы, которую вы создаете как часть вашего фреймворка. Вы можете создать плагины, которые специально будут разработаны для активации с помощью хуков, добавленных в ваш фреймворк, как я показала выше.

Однако, стоит потратить некоторое время, прежде чем написать плагин, если это является правильным решением: если сомневаетесь, обратитесь к инфографике в начале этого урока для окончательного решения.

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 Code 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.