Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
Теми
Уроки
Хакі

Ви могли помітити, що на деяких сайтах у записах вказується, що ці пости старі, якщо їм більше чотирьох років. Те саме можна побачити і в директорії плагінів WordPress, коли плагін не оновлювався протягом двох років.

Як створити плагін для ідентифікації старих записів на WordPress

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Сьогодні ми спробуємо створити плагін, який відображатиме схожі повідомлення про статус записів, коли посту вже більше Х-років, де «Х» - Це ціле число, що вказує кількість років запису.

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

Як створити плагін для ідентифікації старих записів на WordPress

Цей плагін буде створюватися з підходом об'єктно-орієнтованого програмування, щоб зробити код організованішим, посилаючись на принципи СУХИЙ. Тому вам потрібні знання про об'єктно-орієнтоване програмування, якщо ви хочете зрозуміти цей посібник зі створення плагіна.

Розробка плагіна

Плагін складатиметься з двох захищений властивостей класу та десяти методів. Ці властивості зображені нижче.

  • $_notification містить сповіщення, отримані з бази даних, раніше створеної користувачем плагіна.
  • $_years містить кількість років, отриманих також із бази даних.

Під час статті ви дізнаєтеся роль кожного методу (відомих як функції у процедурному програмуванні) та їх відповідні коди.

Код плагіна

Для початку додамо шапку плагіна, створимо клас та визначимо властивості:

<?php
 
/*
 Plugin Name: Alert Post is Old
 Plugin URI:
 Description: Display a notification when a post is older than X-years where X is any number of years.
 Author: Agbonghama Collins
 Version: 1.0
 Author URI: http://tech4sky.com/
 */
 
 
class AlertOldPost {
     
    // stores the notification retrieved from DB 
    protected $_notification;
     
    // stores the number of years retrieved from DB
    protected $_years;

При створенні плагіна в ООП, всі хуки дій та хуки фільтрів можуть бути встановлені в конструкторі, який називається __конструювати. Метод конструктора нашого плагіна складатиметься з п'яти функцій: три хука дій, хук фільтра та функція register_activation_hook.

function __construct() {
     
    // Initialize setting options on activation
    register_activation_hook( __FILE__, array( $this, 'aop_settings_default_values' ) );
 
    // register Menu
    add_action( 'admin_menu', array( $this, 'aop_settings_menu' ) );
 
    // hook plugin section and field to admin_init
    add_action( 'admin_init', array( $this, 'pluginOption' ) );
 
    // add the plugin stylesheet to header
    add_action( 'wp_head', array( $this, 'stylesheet') );
 
    // display notification above post
    add_filter( 'the_content', array( $this, 'displayNotification' ) );
 
}
  • Функція register_activation_hook вимагає, щоб у цьому методі в плагіні залишалися стандартні налаштування під час активації.
  • Наступні три функції add_action вимагають, щоб хук функцій зареєстрували меню плагіна, розділ плагіна та поле для admin_init та додали відповідно таблицю стилів у шапку плагіна.
  • Функція add_filter вимагає використання displayNotification метод, який відображає інформацію про те, що запис є старим.

Виходячи з вищезазначеного методу __конструювати, функція displayNotification вимагає, щоб у способі залишалися налаштування плагіна за умовчанням.

public function aop_settings_default_values() {
 
    $aop_plugin_options = array(
        'notification' => 'This post hasn't been updated in over 2 years.',
        'years' => 2
    );
     
    update_option( 'apo_alert_old_post', $aop_plugin_options );
         
}

метод aop_settings_menu створює підменю плагіна під існуючі "Параметри" в меню.

public function aop_settings_menu() {
 
    add_options_page(
        'Alert Post is Old',
        'Alert Post is Old',
        'manage_options',
        'aop-alert-post-old',
        array( $this, 'alert_post_old_function' )
    );
         
}

Третій аргумент, що передається у функцію add_options_сторінка є alert_post_old_function методом, за допомогою якого відображається сторінка контенту налаштувань плагіна.

public function alert_post_old_function() {
 
        echo '<div class="wrap">';
        screen_icon();
         
        echo '<h2>Alert Post is Old</h2>';
        echo '<form action="options.php" method="post">';
         
        do_settings_sections('aop-alert-post-old');
        settings_fields('aop_settings_group');
         
        submit_button();
 
}

Щоб додати опції плагіна, потрібно використовувати WordPress API налаштувань для додавання форм налаштувань.

Спочатку визначаємо розділ, додаємо налаштування та нарешті реєструємо налаштування. Все це буде зроблено у методі pluginOption, який був прикріплений до дії admin_init раніше в __конструювати метод.

public function pluginOption() {
 
    add_settings_section(
        'aop_settings_section',
        'Plugin Options',
        null,
        'aop-alert-post-old'
    );
 
    add_settings_field(
        'notification',
        '<label for="notification">Notification to display when post is old</label>',
        array( $this, 'aop_notification' ),
        'aop-alert-post-old',
        'aop_settings_section'
    );
 
    add_settings_field(
        'years',
        '<label for="years">Number of years for a post to be considered old</label>',
        array( $this, 'aop_years' ),
        'aop-alert-post-old',
        'aop_settings_section'
    );
 
    register_setting( 'aop_settings_group', 'apo_alert_old_post' );
     
}

Поле налаштувань методу зворотного виклику: aop_notification и aop_years, які заповнюють поле потрібними формами, виглядають так:

public function aop_notification() {
 
    $this->databaseValues();
     
    echo '<textarea id="notification" cols="50" rows="3" name="apo_alert_old_post[notification]">';
    echo esc_attr( $this->_notification );
    echo '</textarea>';
 
}
public function aop_years() {
     
    $this->databaseValues();
    echo '<input type="number" id="years" name="apo_alert_old_post[years]" value="' . esc_attr($this -> _years) . '">';
 
}

Ми отримаємо повідомлення плагіна та налаштування з віком у роках та позначимо їх у дві захищені функції: $_notification и $_years тому, що вони стануть у нагоді, коли нам потрібно буде визначити «вік» запису, а також для відображення повідомлення.

public function databaseValues() {
 
    $options = get_option( 'apo_alert_old_post' );
    $this->_notification = $options['notification'];
    $this->_years = $options['years'];
     
}

Код CSS, що використовується для стилю повідомлень, буде використовуватися в таблиця стилів метод.

public function stylesheet() {
        echo <<<HTML
    <!-- Alert post is old (author: http://tech4sky.com) -->
    <style type="text/css">
    .oldPost {
        padding-top: 8px;
        padding-bottom: 8px;
        background-color: #FEEFB3;
        color: #9F6000;
        border: 1px solid;
        padding: 4px 12px 8px;
        margin-bottom: 20px;
        border-radius: 6px;
    }
    span.oldPost {
        background-color: #9F6000;
        color: #fff;
        padding: 1px 10px 0px;
        border-radius: 20px;
        font-size: 18px;
        font-weight: bold;
        font-family: Verdana;
        float: left;
        margin: 0px 8px 0px 0px;
    }
    span.oldtext  {
        padding-top: 0px;
        color: #9F6000;
    }
    </style>
    <!-- /Alert post is old -->
     
HTML;
 
    }

І нарешті, функція, яка відображає повідомлення вище над самим контентом, який ми вважаємо «старим», виглядає так:

public function displayNotification( $content ) {
     
    global $post;
     
    $this->databaseValues();
 
    // get settings year
    $setYear = $this->_years;
 
    // get notification text
    $notification = $this->_notification;
         
    // calculate post age
    $year = date( 'Y' ) - get_post_time( 'Y', true, $post->ID );
 
    // show notification only on post
    if ( is_single() ) :
     
        if ( $year > $setYear ) {
             
            echo '<div class="oldPost">';
            echo '<span class="oldPost"> ! </span>';
            echo "<span class='oldtext'>$notification</span>";
            echo '</div>';
                 
        }
             
    endif;
 
    return $content;
     
}

Декілька слів про вищевказаний код: спочатку ми витягли цифру, яка означає «вік» запису і визначає, що вона стара, і рік, коли вона була написана. Якщо результат перевищує рік, відповідно до якого пост вважається старим, з'являється відповідне повідомлення.

В результаті ми завершили кодування класу плагіна. Щоб клас почав працювати, потрібно його ініціювати так:

new AlertOldPost;

Результат

Як створити плагін для ідентифікації старих записів на WordPress

Ось таке повідомлення відображатиметься над текстом, якщо ваш запис застарів на 2 роки.

Готовий плагін Alert Post is Old

Як створити плагін для ідентифікації старих записів на WordPress

Якщо ви не розібралися зі структурою плагіна, ви можете завантажити готову безкоштовну версію і встановити на свій сайт самостійно.

Джерело: code.tutsplus.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, що спеціалізується на створенні сайтів WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 0

Додати коментар або відгук