Поддержка Плагины Переопределить функцию

  • Задача:
    В шаблоне нужен вывод немного измененной функции the_title, без самого изменения функции.
    Т.е. в шаблоне: <?php the_title();?> — выведет заголовок.
    <?php the_mod_title?> — выведет измененный заголовок.
    Таким образом функции должны работать по разному, на обрабатывать одни данные. Как реализовать?
    add_action, add_filter не подходят т.к. the_title меняется.

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Таким образом функции должны работать по разному, на обрабатывать одни данные. Как реализовать?

    Использовать для своей функции http://codex.wordpress.org/Template_Tags/get_the_title

    пробую, почему не работает?

    function opechatka1() {
    $get_title='бла бла '.get_the_title;
    return $get_title;
    }
    add_filter('get_the_tile','opechatka1');

    вызываю
    <?php print_r(get_the_title());?>

    пробую, почему не работает?

    Потому что плохо читаете доки…

    А конкретнее можно узнать ошибку?

    А конкретнее можно узнать ошибку?

    Объясните, что вы хотите получить в итоге.

    Хочу в заголовке заменить несколько букв на др буквы, a=>a(англ), и=>i.
    При этом нужно вывести нормальный заголовок.
    Потом вывести измененный заголовок.

    Примерно так

    function wikicms_change_letters($title) {
    	$find = array('а', 'и'); //что ищем
    	$diacr = array('a', 'i'); //на что меняем
    	$title = str_replace($find, $diacr, $title);
    
    	return $title;
    }
    add_filter( 'the_title', 'wikicms_change_letters' );

    Потом вывести измененный заголовок.

    Обычный заголовок выводите стандартной функцией, а этот оформляете через свою функцию

    function the_mod_title() {
    	$title = get_the_title();
    	$find = array('а', 'и');
    	$diacr = array('a', 'i');
    	$title = str_replace($find, $diacr, $title);
    
    	echo $title;
    }

    ее используете рядом с обычной функцией
    <?php the_mod_title(); ?>

    Так я тоже могу.
    Дело в том, что в шаблоне нужно сделать так, т.е. при обращении к посту будет:
    <?php the_title();?> — нормальный заголовок
    бла бла бла
    куча текста и кода
    <?php wikicms_change_letters();?> — измененный заголовок
    бла бла

    Огромное спасибо!

    [offtop] Почему-то у меня str_ireplace не работает..
    Если есть заглавные буквы используем такой вариант:

    function the_mod_title() {
        $title = get_the_title();
        $diacr = array('а' => 'a', 'А' => 'A', 'и' => 'i', 'И' => 'I');
        $title = strtr($title, $diacr);
    
        echo $title;
    }

    Модератор Yuri

    (@yube)

    Почему-то у меня str_ireplace не работает..

    Может, потому что utf? 😉

    Может, потому что utf? 😉

    Юрий, может и так.. Хм.. Хотя в доках по этому поводу, вроде как, ничего и не указано..
    Да и мне простительно ошибаться — я ведь любитель-самоучка :))

    Модератор Yuri

    (@yube)

    У самой PHPы с кодировками и локалями просто беда. Более-менее предсказуемый результат обработки национальных букв можно получить только с помощью mb_* функций (расширение mbstring) и функций preg_* (расширение PCRE).

    P.S. Когда я получал высшее образование, не то что PHP, а и HTML еще не было. Так что по всему выходит, что я тоже самоучка 🙂

    [off]

    У самой PHPы с кодировками и локалями просто беда. …можно получить только с помощью mb_* функций (расширение mbstring)

    Нынешняя тенденция разработки PHP идет к подмножеству юникода, типа utf-8, если верить их анонсам на сайте.. Может скоро и не будет таких заморочек, и mb_ не будет :)) все в ядре, автоматом )
    А еще бы .ini всего из пары строчек :))

Просмотр 15 ответов — с 1 по 15 (всего 16)
  • Тема «Переопределить функцию» закрыта для новых ответов.