Поддержка Проблемы и решения Изменение стандартных выводов в functions.php

  • Приветствую.
    Прошу помочь с subj. В движку лазить плохо и не безопасно, а сам добавить изменения в functions.php, увы, не могу =(
    Сейчас две задачи, они однотипные:
    1. Есть previous_post_link и next_post_link с аргументами все понятно, но то, что выходит меня не устраивает. На первых парах полез в link-templete.php и нашел adjacent_post_link со строкой $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'">'; добавил руками title="'.$title.'". В результате получил что хотел — ссылку с атрибутом title с названием следующего/предыдущего поста. А теперь вопрос — как это можно сделать в виде фильтра или как оно правильно называется, что бы не трогать ничего «святого»? (поиском занимался, но увы, не удачно =()

    2. Волею судеб нужно убрать из всех ссылок про комментарии ссылки на якоря #commtent-ID, #comments, #respond. Опять же вырезка из comment-template.php далеко не правильное решение. Помогите, пожалуйста, с этим.
    #comment-ID есть в
    function get_comment_link() и добавляется вот этой строкой: return apply_filters( 'get_comment_link', $link . '#comment-' . $comment->comment_ID, $comment, $args );
    #respond немного по другому добавляется, в function comments_popup_link() в строке echo get_permalink() . '#respond';

    И ещё один вопрос из этой же темы — можно ли в этом же functions.php заблокировать actions из default-filters.php или в этом файле комментировать строки?

    Спасибо!

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    1. Как вариант, можно выводить ссылки так:
      <?php previous_post_link('%link', '<span title="%title">&larr; %title</span>'); ?>
      <?php next_post_link('%link', '<span title="%title">%title &rarr;</span>'); ?>
    2. Можно заменить все вызовы get_comment_link() и comments_popup_link() в теме на get_permalink(). Если всё же нужно решение с фильтром:
      function remove_comment_anchors($link) {
      	return preg_replace('/#comment\-.*/', '', $link);
      }
      add_filter('get_comment_link', 'remove_comment_anchors');
    3. Да, с помощью functions.php можно удалить действия и фильтры, добавляемые в default-filters.php.

    Сергей, спасибо большое за ответ.
    По первому вопросу — почему бы и нет, действительно самое простое решение.

    Если не сложно будет подскажите, пожалуйста, как правильно удалить стандартные фильтры и действия по третьему вопросу. В кодексе нашёл remove_action( $tag, $function_to_remove, $priority, $accepted_args );

    Есть, к примеру такое:
    add_action('wp_head','parent_post_rel_link',10,0); удалять мне надо будет так же как добавлялось remove_action('wp_head','parent_post_rel_link',10,0); или будет достаточно без доп. параметров remove_action('wp_head','parent_post_rel_link');?

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

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

    Ещё раз спасибо!

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Изменение стандартных выводов в functions.php» закрыта для новых ответов.