2010-06-27 2 views
1

Я новичок в написании плагинов Wordpress, поэтому для начала я пытаюсь создать простой, который просто изменяет строку. Я написал сценарий некоторое время назад и знаю, что он функционирует. Но чтобы использовать его для Wordpress, я хочу применить его к заголовкам сообщений. Когда я заменил строку функцией «get_the_title()», она возвращает белый экран. Я разделил его на:Функция Wordpress возвращает белый экран в плагине

function display_title() { 
echo get_the_title(); 
} 

add_action('the_title', 'display_title'); 

Это все еще возвращает белый экран. Поэтому я считаю, что это должна быть функция get_the_title(). Может кто-нибудь объяснить мне, почему это не работает, и, возможно, другой способ получить строку заголовка?

+1

Включено ли сообщение об ошибке? Вы должны получать значимое сообщение об ошибке с PHP. –

ответ

4

Как Джон говорит the_title является фильтром, а не крюк действия, хотя ваша функция будет называться независимо от того, регистрируетесь ли вы его используя add_filter или add_action.

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

function display_title($title) { 
    $title .= '!'; // Do something with the title string here 
    return $title; 
} 

add_filter('the_title', 'display_title'); 
+0

Спасибо, это отлично работало. Я не знал, что могу использовать переменную с названием $ title, и она будет извлекать каждую строку. Есть ли список из них где-то в кодексе? –

+2

Функция не возвращает строку заголовка, она передается в качестве аргумента. В основном, когда вы вызываете 'the_title()' в своем цикле Wordpress, заголовок извлекается из базы данных, передается через все функции, подключенные к фильтру 'the_title', а затем печатается. К сожалению, большинство фильтров не документированы в кодексе, поэтому лучший способ узнать, какие аргументы будут переданы вашей функции, - это поиск исходного кода Wordpress для 'apply_filters ('filter_name'', аргументы, которые следуют за ним, будут переданы к вашей функции. –

+1

Если вы посмотрите на 'wp-includes/default-filters.php', то большинство фильтров для' the_title' должно быть там. –

1

Ну, с одной стороны, 'the_title' не является действием, это фильтр. Так что эта функция никогда не срабатывает. Так что это не вина этой функции, это, вероятно, что-то еще. Я бы предложил прочитать на плагине api и узнать разницу между действиями и фильтрами. Фильтры специально разработаны, чтобы сделать то, что вы хотите в простой способ:

http://codex.wordpress.org/Plugin_API/

+0

Спасибо, теперь вижу разницу. Однако, если я просто вводю строку вместо функции get_the_title(), то она, похоже, работает без проблем. Он загружает страницу и заменяет названия этой строкой. –

Смежные вопросы