Как переопределять функции wordpress

Эгоист
На сайте с 12.09.2011
Offline
71
4371

В файле темы functions.php?

Есть функция, стандартная

function start_el(&$output, $page, $depth, $args, $current_page) {
if ( $depth )
$indent = str_repeat("\t", $depth);
else
$indent = '';

extract($args, EXTR_SKIP);
$css_class = array('page_item', 'page-item-'.$page->ID);
if ( !empty($current_page) ) {
$_current_page = get_page( $current_page );
_get_post_ancestors($_current_page);
if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
$css_class***91;***93; = 'current_page_ancestor';
if ( $page->ID == $current_page )
$css_class***91;***93; = 'current_page_item';
elseif ( $_current_page && $page->ID == $_current_page->post_parent )
$css_class***91;***93; = 'current_page_parent';
} elseif ( $page->ID == get_option('page_for_posts') ) {
$css_class***91;***93; = 'current_page_parent';
}

$css_class = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );

$output .= $indent . '<li class="' . $css_class . '"><a href="' . get_permalink($page->ID) . '">' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . '</a>';

if ( !empty($show_date) ) {
if ( 'modified' == $show_date )
$time = $page->post_modified;
else
$time = $page->post_date;

$output .= " " . mysql2date($date_format, $time);
}
}

Как её переопределить?

Sentoro
На сайте с 18.03.2007
Offline
149
#1
Эгоист:


Как её переопределить?

Взять и добавить в нее код, какой нужно. Ответ на вопрос "зачем ?" имеете ? :)

Продается СДЛ на тему инвестирования (http://www.telderi.ru/ru/viewsite/903457)
Эгоист
На сайте с 12.09.2011
Offline
71
#2

я не хочу править стандартные файлы wordpress, хотелось бы чтобы моя тема сама задавала параметры

Hixon10
На сайте с 21.08.2010
Offline
125
#3

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

Веду свой невзрачный блог (http://hixon.ru/).
М
На сайте с 08.02.2006
Offline
59
#4

В php нет стандартных возможностей для перегрузки функций. В версии 5.3.0 и выше можно перегружать используя пространства имен, которые WP скорей всего не поддерживает

Эгоист
На сайте с 12.09.2011
Offline
71
#5
Магнат:
В php нет стандартных возможностей для перегрузки функций. В версии 5.3.0 и выше можно перегружать используя пространства имен, которые WP скорей всего не поддерживает

Как это нет?

Drupal тоже на php и там переопределять функции можно. И я к этому привык.

Тут взялся за проект на WordPress и я уверен что и в нем возможно переопределять функции в файле темы functions.php как в Drupal в файле templates.php

---------- Добавлено 01.04.2012 в 20:14 ----------

Hixon10:
Как раз таки для этого и придумали хуки, чтобы не трогать исходный код. Ищите нужный хук, пишите обработчик для события. Для написанного обработчика задаете самый высокий приоритет. А дальше - можно сделать так, чтобы другие обработчики этого события не выполнялись.

Вы случайно не Колумб? извините конечно за сарказм, но это я знал.

Прежде чем прийти и создать тему, я искал через поисковики ответ на мой вопрос, но толком нечего не нашел.

Затем пришел сюда и попросил помощи в этом деле, у тех кто уже ковыряет wordpress давно.

М
На сайте с 08.02.2006
Offline
59
#6
Как это нет?
Drupal тоже на php и там переопределять функции можно. И я к этому привык.

Тут взялся за проект на WordPress и я уверен что и в нем возможно переопределять функции в файле темы functions.php как в Drupal в файле templates.php

Нет в друпале переопределения функций в классическом понимании, там переопределение реализовано своим механизмом - функция m проверяет существование функции template_m, если она есть вернуть результат template_m, иначе global_m.

В вп можно накидать своих функций в functions.php и использовать их в шаблонах

Эгоист
На сайте с 12.09.2011
Offline
71
#7
Магнат:
В вп можно накидать своих функций в functions.php и использовать их в шаблонах

Ага! таким макаром :)

Спасибо!

SeVlad
На сайте с 03.11.2008
Offline
1609
#8
Магнат:
В вп можно накидать своих функций в functions.php и использовать их в шаблонах

Лучше даже через дочерние темы.

Как раз описан случай ТСа:

if (!function_exists('theme_special_nav')) {
function theme_special_nav() {
// Ваш код.
}
}

В этом случае, дочерняя тема может переопределить функцию PHP родительской темы просто объявив ее снова.
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий