• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

    Мы активно растущий клуб по WordPress и нам нужна помощь каждого человека, в том числе и Ваша! Не стесняйтесь и станьте частью большого сообщества.
    Мы делимся новостями, отытом и полезными советами! Пройдите простую регистрацию, чтобы пользоваться всеми возможностями нашего клуба.

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Мастерская шальные ручки!

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
И так хочу открыть раздел по запилу плагинов.
Цель и задачи:
Пойдем двумя путями, первый: создаем простой плагин в котором нет ни чего значимого но есть какая то фишка (даже банально запостил новость получил письмо, это есть в примерах) далее дорабатываем ... например в письмо вставляется пост, потом добавляем появление модального окна, потом делаем модальное окно + действие итд... (думаю понятно)
Второй путь:
Берем не самую популярную или наоборот самую популярную фишку(желательно импортную) и перерабатываем полностью под наши задачи. Пример: ну тут сложнее... пусть будет смс оповещения (желательно через бесплатные шлюзы) или ... предложения приветствуются.

процесс и результат:
В процессе при общем участии мы научимся создавать свое, переделывать под свои нужды и дорабатывать существующее. Вместе "поиздеваемся" над плагинами и над собой )))

ну а в целом получим опыт, возможно законченный продукт или адаптированный продукт если доработаем чужое.

Все разработки (чтоб не было потом разговоров) будут под брендом клуба, общей собственностью и ни чьей в отдельности. Все участники разработки будут внесены в Автор лист (под никами либо под реальными именами) все тестеры будут добавлены в Тест лист. Каждый участник разработки имеет равные права на обладание и продвижение совместного творчества, каждый тестер имеет право на исключительное обладание "продуктом или результатом". Остальное по мере развития проекта.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
пока тесты данной конструкции работоспособность не гарантированна!!!

Сразу начну с простого плагина (что добавить куда развить обсуждаем...)
и так создаем папку плагина на ПК (далее буду писать под номерами шагов с комментами)
1. создаем папку на ПК: uni_plag
2. в нем пустой файл uni-plag.php
3. вставляем в него теги
PHP:
<?php
?>
4. Вставляем обязательно эти два куска перед тегом
Код:
<?php
/*
Plugin Name: Uni-Plag-test-clubwp
Plugin URI: http://clubwp.ru
Description: кратко пишем что может плагин, плагин совместной разработки, пока только отсылка письма при публикации поста
Version: 1.0
Author: clubwp.ru
Author URI: http://clubwp.ru
License: GPL2
*/
?>
<?php
/*  Copyright YEAR  PLUGIN_AUTHOR_NAME  (email : email автора плагина)
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
    published by the Free Software Foundation.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
?>
5. сохраняем
6. пишем ниже
Код:
<?php
wp_mail($to, $subject, $message, $headers, $attachments);
?>
это активируем одну из стандартных функций WP wp_mail (позже дам ссылки на кодекс)
которая основана на функции PHP mail()
7. добавим функцию перед wp_mail (объявим переменные)
Код:
function uni_plag($post_ID)
{
    $to = 'test@test.ru';  //EMAIL получателя
    $subject = 'У нас новый пост'; //Тема письма
    $message = 'У нас новая статья на сайте. Запись имеет id='.$post_ID; //Тело письма с указанием ID записи
    wp_mail($to, $subject, $message);
    return $post_ID;
}
Дополнения для понимания:

  • Параметры:
$to – string (строка) или (array) массив с адресами получателей
$subject – string (строка) с темой письма
$message – string (строка) с содержанием письма
$headers – string (строка) или (array) массив заголовков писем (для продвинутых)
$attachments – string (строка) или (array) массив файлов, которые необходимо прикрепить к письму

Кодекс по событиям: Для просмотра ссылки Войди или Зарегистрируйся

да кстати... ссылка не просто так тот кто прочтет тот узнает какая строка добавится и когда все заработает.

еще дополню для размышления:
$to - вот тут можно доработать и сделать выбор или настройки...
$attachments - в последствии добавим в тело письма сам пост или что то еще

Так добавлю итоговый вариант потом дам пояснения

Код:
<?php
/*
Plugin Name: Uni-Plag-test-clubwp
Plugin URI: http://clubwp.ru
Description: кратко пишем что может плагин, плагин совместной разработки, пока только отсылка письма при публикации поста
Version: 1.0
Author: clubwp.ru
Author URI: http://clubwp.ru
License: GPL2
*/
?>
<?php
/*  Copyright YEAR  PLUGIN_AUTHOR_NAME  (email : email автора плагина)
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as
    published by the Free Software Foundation.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
?>
<?php
function uni_plag($post_ID)
{
$to = 'ВАШЕ МЫЛО';  //EMAIL получателя
$subject = 'У нас новый пост'; //Тема письма
$message = 'У нас новая статья на сайте. Запись имеет id='.$post_ID; //Тело письма с указанием ID записи
wp_mail($to, $subject, $message);
return $post_ID;
}
add_action('publish_post', 'uni_plag');
?>
 
Последнее редактирование:

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
И так первый плагин работает. достаточно закинуть его в папку плагинов и активировать в админке потом пишем пост и видим уведомление
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Теперь добавим функций плагину.
изменить тип письма на html
Код:
add_filter('wp_mail_content_type', create_function('', 'return "text/html";'));
Укажем свой адрес email в заголовке
Код:
add_filter( 'wp_mail_from', 'vortal_wp_mail_from' );
function vortal_wp_mail_from( $email_address ){
    return 'xxx@yyy.com';
}
// получим заголовок: WordPress <xxx@yyy.com>
прикрепим файл
Код:
$attachments = array(WP_CONTENT_DIR . '/uploads/имя_файла');
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Ждемс... Кто чего расскажет и скажет
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
добавим функцию удаления плагина создадим файл uninstall.php и впишем туда этот код
Код:
<?php
/**
 * Fired when the plugin is uninstalled.
 *
 * @package   Uni_plag
 * @author    clubwp.ru <мыло@тут>
 * @license   GPL-2.0+
 * @link      http://clubwp.ru
 * @copyright 2016 clubwp.ru
 */

// If uninstall not called from WordPress, then exit
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    exit;
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
теперь про модальное окно, приведу пример кода (его можно вставить самостоятельно в тему и будет работать) но наша задача немного другая
Код:
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Модульное окно</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <style type="text/css">
        html, body { height:100%; width:100%; } /* Для примера растягиваем окно на 100% высоту и ширину */
        .modalWindow {
            display: none;
            width:300px;
            height:300px;
            border:2px solid #FF0000;
            box-shadow: 0 0 3px #000;
            position: absolute;
            top: 20%;
            left:50%;
            margin-left:-150px;
            z-index: 1;
        }
    </style>
    <!-- Наш JS -->
    <script type="text/javascript">
        jQuery(document).ready(function($){
            $('#clickMe').click(function(){ // Что будет происходить по клику по ссылке
                $('.modalWindow').fadeIn('slow');
            });

            $('.modalWindow').click(function(){ //Что будет происходить по клику по форме
                $(this).fadeOut('slow');
            });
        });
    </script>
</head>
<body>
    <h1>Hello World</h1>
    <a href="#" id="clickMe">Показать Блок</a>
    <div class="modalWindow">Наше модальное окно</div>
</body>
</html>
думаем...

Забыл добавить вызов по такой ссылке:
Код:
<a href="#" id="clickMe">Показать Блок</a>
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
добавим немного для будущего
1. создадим в папке плагина папки: css, js, methods
2. добавим код в самое начало сразу после <?php
Код:
if ( ! defined( 'ABSPATH' ) ) exit; // Выход при обращении напрямую
3. добавим перед нашим кодом (вот перед этим function uni_plag($post_ID))
Код:
// Конструктор для класса.
class uni_plag{
public function __construct() {

    add_action( 'admin_init', array( $this, 'require_3_5' ) );
    add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
     add_filter( 'plugin_action_links_'. plugin_basename( __FILE__ ), array( $this, 'help_link' ) );
     
    }
    //Проверяем версию WP 3.5+
    public function require_3_5() {
    include_once('methods/version.php');
    }
    //Добавим ссылку на страничку помощи
    public function help_link($links){
    $settings_link = '<a href="http://clubwp.ru/threads/masterskaja-shalnye-ruchki.1301/">Help</a>';
      array_push( $links, $settings_link );
      return $links;
    }
    }
4. создадим файл version.php в папке methods и вставим следующее в него:
Код:
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Выход при обращении напрямую
global $wp_version;
    $plugin = plugin_basename( __FILE__ );
    $plugin_data = get_plugin_data( __FILE__, false );

    if ( version_compare($wp_version, "3.5", "<" ) ) {
        if( is_plugin_active($plugin) ) {
            deactivate_plugins( $plugin );
            wp_die( "'".$plugin_data['Name']."' требуется WordPress 3.5 или выше! Пожалуйста, обновите WordPress и попробуйте снова.<br /><br />Вернуться <a href='".admin_url()."'>WordPress admin</a>." );
        }
}
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
теперь опять же на будущее создаем меню в админке для нашего плагина
1. вставляем этот код перед function uni_plag($post_ID)
Код:
add_action( 'admin_menu', 'register_my_custom_menu_page' );
function register_my_custom_menu_page(){
    add_menu_page(
        'custom menu title', 'Наше меню', 'manage_options', 'uni_plag/uni_plag-admin.php', '', plugins_url( 'uni_plag/images/TF-thumb.png' ), "65.7"
    );
}
2. создаем файл uni_plag-admin.php вставляем для начала в него
Код:
<?php
    echo "Страничка для админки";
?>
3. создаем папку images туда закинем значок плагина (желательно размером 15х15)

Список позиций для базовых пунктов меню:

2 Консоль
4 Разделитель
5 Посты
10 Медиа
15 Ссылки
20 Страницы
25 Комментарии
59 Разделитель
60 Внешний вид
65 Плагины
70 Пользователи
75 Инструменты
80 Настройки
99 Разделитель

Внимание! Если два пункта используют одинаковую цифру-позицию, один из пунктов меню может быть перезаписан и будет показан только один пункт из двух. Чтобы избежать конфликта, можно использовать десятичные значения, вместо целых чисел: 63.3 вместо 63. Используйте кавычки для кода: "63.3".

пока все
 
Последнее редактирование:

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
второй вариант того же самого (предпочту первый, потому что можно позже разделить функции админки и плагина) создаем папку admin и туда наш файл uni_plag-admin.php
Код:
add_action( 'admin_menu', 'register_my_custom_menu_page' );
function register_my_custom_menu_page(){
    add_menu_page(
        'custom menu title', 'Наше меню', 'manage_options', 'custompage', 'my_custom_menu_page', plugins_url( 'myplugin/images/icon.png' ), 6
    );
}

function my_custom_menu_page(){
    echo "Код страницы.";
}
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Кстати можете для интереса вставить код про модальное окно в файл uni_plag-admin.php и посмотреть )))
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
для тех кому не лень и хочет расти.

задание: вынести из примера модального окна стиль в отдельный файл и подключить его
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Давайте сделаем меню для плагина и его подменю (пригодится)
1. Меняем то что было на этот код
Код:
add_action( 'admin_menu', 'register_my_custom_menu_page' );
function register_my_custom_menu_page(){
add_menu_page('Основное доп. меню', 'Мое основное меню', 'manage_options', 'uni_plag/admin/uni_plag-admin.php');
add_submenu_page( 'uni_plag/admin/uni_plag-admin.php', 'Основное доп. меню', 'Мое основное меню', 'manage_options', 'uni_plag/admin/uni_plag-admin.php');
add_submenu_page( 'uni_plag/admin/uni_plag-admin.php', 'Мое подменю', 'Страница настроек моего подменю', 'manage_options', 'uni_plag/admin/options.php');
}
2. Создаем папку admin и файл в нем options.php
3. Перемещаем туда же файл uni_plag-admin.php
4. в файл options.php пропишем для наглядности
Код:
<?php
    echo "Тут будут опции плагина";
?>
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
забыл вставьте перед add_action( 'admin_menu', 'register_my_custom_menu_page' );
этот код
Код:
// Создать экземпляр класса.
$uni_plag = new uni_plag();
А то классы не подключили
 

Di Ost

WP шаман
СВОЙ

Di Ost

WP шаман
СВОЙ
Сообщения
272
Интересная мысль, буквально недавно виделись с другом и он рассказывал как шаристые программисты пишут годное ПО под китайский товар, пусть платное малость, но очень крутое и тем самым зарабатывают, однако столкнулся с проблемой нехватки времени, сдаю один проект сразу летит другой. Попутно набираю разные курсы интересные для меня но так же некогда их просмотреть.
Плагины расширяю по мере надобности под какие либо проекты.. Но они сугубо узконаправленные.
А вот на счет Вашей темы, еще бы подкинул идею с контролем версий. Гораздо проще смотреть, этапы создания и разработки и можно скачать рабочий вариант или создать тестовую ветку и пробовать его развивать.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Интересная мысль, буквально недавно виделись с другом и он рассказывал как шаристые программисты пишут годное ПО под китайский товар, пусть платное малость, но очень крутое и тем самым зарабатывают, однако столкнулся с проблемой нехватки времени, сдаю один проект сразу летит другой. Попутно набираю разные курсы интересные для меня но так же некогда их просмотреть.
Плагины расширяю по мере надобности под какие либо проекты.. Но они сугубо узконаправленные.
А вот на счет Вашей темы, еще бы подкинул идею с контролем версий. Гораздо проще смотреть, этапы создания и разработки и можно скачать рабочий вариант или создать тестовую ветку и пробовать его развивать.
контроль версий в каком ключе? можно в плагин встроить проверку обновлений и оповещение. не сложно
 

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Добрался до этой темы. Я вот начинал делать плагин, но он так и подвис. Сейчас актуально делать информационные сайты. И по этому я начал делать плагин, который упрощает работу в WP с авторами. Убирает всё лишнее и доп. настройки.

Думаю это актуально и можно продолжить развитие плагина. Если интересно, то размещу его тут и можно его развивать.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Добрался до этой темы. Я вот начинал делать плагин, но он так и подвис. Сейчас актуально делать информационные сайты. И по этому я начал делать плагин, который упрощает работу в WP с авторами. Убирает всё лишнее и доп. настройки.

Думаю это актуально и можно продолжить развитие плагина. Если интересно, то размещу его тут и можно его развивать.
А распиши подробно суть примочки. Может всем миром и решим задачи и что то еще
 

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Позже сегодня напишу. Где-то пытался структурировать и всё описать. Надо поднять все заметки, если найду :oops:
 

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Нашел плагин, там накидал, что успел. Так же было много идей надо будет внедрять постепенно. Из изначально хотел делать без админки, но думаю для можно сделать эстетичности. Даже назвал его Good Hook
 

Вложения

Сверху