Подняться наверх

Как удалить ссылку из Мета WordPress - ООП

You are here

По просторам интернета можно найти множество материалов и даже целых плагинов, которые повествуют / созданы только для того, чтобы удалить одну единственную ссылку на wordpress.org. Все они предлагают всего два варианта на выбор: либо создать новый виджет с нуля (плагины), либо "дешево и сердито" редактировать файлы ядра системы управления содержимым сайта. Однако перечисленные подходы в корне неверны, т.к. сам WordPress собран с применением объектно-ориентированного программирования (ООП). Итак, далее я покажу читателям наиболее корректный способ решения затронутого вопроса.

1. Открываем файл "default-widgets.php". Он расположен в папке "wp-includes", считая от корневого каталога сайта. Редактировать я его не буду. Здесь просто нужно посмотреть исходный код объявления класса WP_Widget_Meta на 298-ой строчке.

2. Вторым шагом нужно открыть "functions.php" темы или файл вашего плагина и т.п., добавив туда следующую конструкцию:

<?php
/* Переопределяем регистрацию виджета Мета средствами API WordPress: */
function load_custom_meta() {
  unregister_widget("WP_Widget_Meta");
  register_widget("Custom_WP_Widget_Meta");
}
add_action("widgets_init", "load_custom_meta");
 
/* Создаем потомка от WP_Widget_Meta, ООП в PHP: */
class Custom_WP_Widget_Meta extends WP_Widget_Meta {
 
  function widget( $args, $instance ) {
    extract($args);
    $title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title'], $instance, $this->id_base);
 
    echo $before_widget;
    if ( $title )
      echo $before_title . $title . $after_title;
?>
      <ul>
      <?php wp_register(); ?>
      <li><?php wp_loginout(); ?></li>
      <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
      <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
      <?php wp_meta(); ?>
      </ul>
<?php
    echo $after_widget;
  }
}
?>

Все задача решена. Здесь мы с вами просто взяли и создали потомка от системного класса WP_Widget_Meta, переопределив только метод widget. Как нетрудно заметить, из него я удалил фрагмент, содержащий ссылочку на http://wordpress.org. Если вы вообще не поняли о чем здесь идет речь, то тогда советую почитать мануал по PHP.

P.S. Ещё проще было бы будь у движка соответвующий фильтр / действие, которым можно было бы стандартный виджет перекрыть. Однако пока такового к сожалению нет.

Опрос

Что хотим видеть
Яндекс.Метрика

Использовано памяти на 23.259mb