Во второй и последней части этого мини-цикла под названием «Сбор пожертвований с помощью WordPress» вы узнаете, как написать плагин для WordPress, который позволит пользователям отправлять вам пожертвования через биткойны.
Плагин использует собственную панель настроек бэкэнда и обладает широкими возможностями настройки.
Итак, начнем!
Инициализация плагина
Шаг 1
 В каталоге wp-content/plugins вашего сайта создайте новую папку под названием donate-bitcoins . 
Шаг 2
  Теперь в этой папке создайте файл с именем donate-bitcoins.php . 
Шаг 3
Наконец, вам нужно добавить информацию о заголовке плагина, которая сообщит WordPress, что ваш новый плагин действительно существует на вашем сервере. Вы можете изменить эти данные по своему усмотрению, хотя обычно они должны быть в таком порядке с минимумом этой информации.
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
 <?php 
/* 
Plugin Name: Bitcoin Donate 
Plugin URI: http://code.tutsplus.com 
Description: Simple Bitcoin donation plugin. 
Version: 1.0.0 
Author: Sam Berson 
Author URI: http://www.samberson.com/ 
*/ 
 | 
Шаг 4
Теперь вы увидите, что ваш новый плагин отображается на странице плагинов администратора WordPress. Идите вперед и активируйте плагин, хотя пока что вы не увидите, что происходит.
Добавление шорткода
Вы сможете использовать кнопку пожертвования с помощью простого шорткода во всех создаваемых вами сообщениях или страницах. По сути, шорткод — это небольшой фрагмент текста, заключенный в квадратные скобки, который позволяет вызывать любую функцию или действие из плагина или темы в редакторе сообщений.
  В этом плагине шорткод будет, [donate] , и его можно добавить в любом месте ваших постов или страниц. 
Шаг 1
  Чтобы добавить шорткод в WordPress, вам нужно использовать функцию add_shortcode , и в ней определить, каким будет шорткод (в данном случае «пожертвовать»), а затем вы определите некоторую информацию о параметрах.  Поскольку мы будем выводить HTML, нам нужно начать отслеживать вывод.  Вам также необходимо закрыть скобки PHP перед следующей частью. 
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
 | 
 function bitcoin_donate_shortcode() { 
   $donate_options = get_option( ‘bitcoin_donate_options’ ); 
   $address = $donate_options[‘bitcoin_address’]; 
   $counter = $donate_options[‘bitcoin_counter’]; 
   ob_start(); 
   ?> 
 | 
Шаг 2
Теперь вы вызовете скрипт плагина CoinWidget и определите некоторую информацию JavaScript. Затем снова откройте тег PHP, перехватите вывод и закройте функцию.
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
 | 
 <script src=»http://coinwidget.com/widget/coin.js»></script> 
    <script> 
        CoinWidgetCom.go({ 
            wallet_address: ‘<?php echo $address; 
            currency: ‘bitcoin’, 
            counter: ‘<?php echo $counter; 
            alignment: ‘bl’, 
            qrcode: true, 
            auto_show: false, 
            lbl_button: ‘<?php _e( ‘Donate’, ‘bitcoin_donate’ ) ?>’, 
            lbl_address: ‘<?php _e( ‘My Bitcoin Address:’, ‘bitcoin_donate’ ) ?>’, 
            lbl_count: ‘donations’, 
            lbl_amount: ‘BTC’ 
        }); 
    </script> 
    <?php 
    return ob_get_clean(); 
} 
 | 
Информация о биткойн-кошельке
Теперь вы собираетесь настроить некоторую информацию для формы настроек , которая позволит вам настроить информацию о кошельке вашей биткойны.
Шаг 1
  Вы можете начать с определения новой функции, которая называется bitcoin_donate_wallet_address() и с помощью функции get_option() . 
| 
 1 
2 
3 
4 
5 
6 
7 
 | 
 function bitcoin_donate_wallet_address() { 
    $options = get_option( ‘bitcoin_donate_options’ ); 
    echo «<input name=’bitcoin_donate_options[bitcoin_address]’ type=’text’ value='{$options[‘bitcoin_address’]}’/>»; 
} 
 | 
Шаг 2
  Давайте продолжим и добавим новую функцию с именем bitcoin_donate_counter() которая определяет параметры выпадающего меню на панели настроек, которые позволят вам указать, какое из следующих чисел будет отображаться рядом с кнопкой доната: «Счет транзакций», «Сумма» Получено «или» Скрыто «. 
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
 | 
 function bitcoin_donate_counter() { 
    $options = get_option( ‘bitcoin_donate_options’ ); 
    ?> 
    <p> 
        <label> 
            <input type=’radio’ name=’bitcoin_donate_options[bitcoin_counter]’ value=»count» <?php checked( $options[‘bitcoin_counter’], ‘count’, true ); 
        </label> 
    </p> 
    <p> 
        <label> 
            <input type=’radio’ name=’bitcoin_donate_options[bitcoin_counter]’ value= «amount» <?php checked( $options[‘bitcoin_counter’], ‘amount’, true ); 
        </label> 
    </p> 
    <p> 
        <label> 
            <input type=’radio’ name=’bitcoin_donate_options[bitcoin_counter]’ value= «hide» <?php checked( $options[‘bitcoin_counter’], ‘hide’, true ); 
        </label> 
    </p> 
    <?php 
} 
 | 
Шаг 3
Теперь вы должны добавить пустой обратный вызов, который необходим для правильной работы плагина. Он просто определяет новую функцию WordPress, открывает ее, а затем снова закрывает.
| 
 1 
2 
3 
4 
5 
 | 
 function bitcoin_donate_callback() { 
    // Optional Callback. 
} 
 | 
Подключить все это
Теперь, когда вы создали свой шорткод и поля формы, вам необходимо подключить его обратно к администратору WordPress, чтобы плагин работал.
Шаг 1
Вам следует начать с регистрации настроек и полей плагина с помощью бэкэнда, добавив следующий код. Проще говоря, этот код сообщает WordPress, что отображать в админке.
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
 | 
 function bitcoin_donate_register_settings_and_fields() { 
    register_setting( ‘bitcoin_donate_options’, ‘bitcoin_donate_options’ ); 
    add_settings_section( ‘bitcoin_donate_settings_section’, __( ‘Main Settings’, ‘bitcoin_donate’ ), ‘bitcoin_donate_callback’, __FILE__ ); 
    add_settings_field( ‘bitcoin_address’, __( ‘Bitcoin Address:’, ‘bitcoin_donate’ ), ‘bitcoin_donate_wallet_address’, __FILE__, ‘bitcoin_donate_settings_section’ ); 
    add_settings_field( ‘bitcoin_counter’, __( ‘What should the counter show?’, ‘bitcoin_donate’ ), ‘bitcoin_donate_counter’, __FILE__, ‘bitcoin_donate_settings_section’ ); 
} 
add_action( ‘admin_init’, ‘bitcoin_donate_register_settings_and_fields’ ); 
 | 
Шаг 2
Теперь вы скажете WordPress, какой HTML использовать при отображении формы настроек в бэкэнде.
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
17 
18 
 | 
 function bitcoin_donate_options_markup() { 
    ?> 
    <div class=»wrap»> 
        <h2><?php _e( ‘Bitcoin Donate Options’, ‘bitcoin_donate’ ) ?></h2> 
        <form method=»post» action=»options.php» enctype=»multipart/form-data»> 
            <?php 
                settings_fields( ‘bitcoin_donate_options’ ); 
                do_settings_sections( __FILE__ ); 
            ?> 
            <p class=»submit»> 
                <input type=»submit» class=»button-primary» name=»submit» value=»<?php _e( ‘Save Changes’, ‘bitcoin_donate’ ) ?>»> 
            </p> 
        </form> 
    </div> 
    <?php 
     } 
 | 
Шаг 3
Наконец, вы скажете WordPress, как называется страница «Настройки», какая роль пользователя может к ней обращаться и какой HTML (определенный выше) использовать для нее.
| 
 1 
2 
3 
4 
5 
6 
 | 
 function bitcoin_donate_initialize_options() { 
    add_options_page( __( ‘Bitcoin Donate Options’, ‘bitcoin_donate’ ), __( ‘Bitcoin Donate Options’, ‘bitcoin_donate’ ), ‘administrator’, __FILE__, ‘bitcoin_donate_options_markup’ ); 
} 
add_action( ‘admin_menu’, ‘bitcoin_donate_initialize_options’ ); 
 | 
Окончательный исходный код
  Ваш плагин теперь должен быть полностью функциональным, добавив шорткод [donate] к вашим постам или страницам!  Вот полный исходный код для плагина: 
| 
 001 
002 
003 
004 
005 
006 
007 
008 
009 
010 
011 
012 
013 
014 
015 
016 
017 
018 
019 
020 
021 
022 
023 
024 
025 
026 
027 
028 
029 
030 
031 
032 
033 
034 
035 
036 
037 
038 
039 
040 
041 
042 
043 
044 
045 
046 
047 
048 
049 
050 
051 
052 
053 
054 
055 
056 
057 
058 
059 
060 
061 
062 
063 
064 
065 
066 
067 
068 
069 
070 
071 
072 
073 
074 
075 
076 
077 
078 
079 
080 
081 
082 
083 
084 
085 
086 
087 
088 
089 
090 
091 
092 
093 
094 
095 
096 
097 
098 
099 
100 
101 
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 
 | 
 <?php 
/* 
Plugin Name: Bitcoin Donate 
Plugin URI: http://code.tutsplus.com 
Description: Simple Bitcoin donation plugin. 
Version: 1.0.0 
Author: Sam Berson 
Author URI: http://www.samberson.com/ 
*/ 
function bitcoin_donate_shortcode() { 
    $donate_options = get_option( ‘bitcoin_donate_options’ ); 
    $address = $donate_options[‘bitcoin_address’]; 
    $counter = $donate_options[‘bitcoin_counter’]; 
    ob_start(); 
    ?> 
    <script src=»http://coinwidget.com/widget/coin.js»></script> 
    <script> 
        CoinWidgetCom.go({ 
            wallet_address: ‘<?php echo $address; 
            currency: ‘bitcoin’, 
            counter: ‘<?php echo $counter; 
            alignment: ‘bl’, 
            qrcode: true, 
            auto_show: false, 
            lbl_button: ‘<?php _e( ‘Donate’, ‘bitcoin_donate’ ) ?>’, 
            lbl_address: ‘<?php _e( ‘My Bitcoin Address:’, ‘bitcoin_donate’ ) ?>’, 
            lbl_count: ‘donations’, 
            lbl_amount: ‘BTC’ 
        }); 
    </script> 
    <?php 
    return ob_get_clean(); 
} 
add_shortcode( ‘donate’, ‘bitcoin_donate_shortcode’); 
function bitcoin_donate_wallet_address() { 
    $options = get_option( ‘bitcoin_donate_options’ ); 
    echo «<input name=’bitcoin_donate_options[bitcoin_address]’ type=’text’ value='{$options[‘bitcoin_address’]}’/>»; 
} 
function bitcoin_donate_counter() { 
    $options = get_option( ‘bitcoin_donate_options’ ); 
    ?> 
    <p> 
        <label> 
            <input type=’radio’ name=’bitcoin_donate_options[bitcoin_counter]’ value=»count» <?php checked( $options[‘bitcoin_counter’], ‘count’, true ); 
        </label> 
    </p> 
    <p> 
        <label> 
            <input type=’radio’ name=’bitcoin_donate_options[bitcoin_counter]’ value= «amount» <?php checked( $options[‘bitcoin_counter’], ‘amount’, true ); 
        </label> 
    </p> 
    <p> 
        <label> 
            <input type=’radio’ name=’bitcoin_donate_options[bitcoin_counter]’ value= «hide» <?php checked( $options[‘bitcoin_counter’], ‘hide’, true ); 
        </label> 
    </p> 
    <?php 
} 
function bitcoin_donate_callback() { 
    // Optional Callback. 
} 
function bitcoin_donate_register_settings_and_fields() { 
    register_setting( ‘bitcoin_donate_options’, ‘bitcoin_donate_options’ ); 
    add_settings_section( ‘bitcoin_donate_settings_section’, __( ‘Main Settings’, ‘bitcoin_donate’ ), ‘bitcoin_donate_callback’, __FILE__ ); 
    add_settings_field( ‘bitcoin_address’, __( ‘Bitcoin Address:’, ‘bitcoin_donate’ ), ‘bitcoin_donate_wallet_address’, __FILE__, ‘bitcoin_donate_settings_section’ ); 
    add_settings_field( ‘bitcoin_counter’, __( ‘What should the counter show?’, ‘bitcoin_donate’ ), ‘bitcoin_donate_counter’, __FILE__, ‘bitcoin_donate_settings_section’ ); 
} 
add_action( ‘admin_init’, ‘bitcoin_donate_register_settings_and_fields’ ); 
function bitcoin_donate_options_markup() { 
    ?> 
    <div class=»wrap»> 
        <h2><?php _e( ‘Bitcoin Donate Options’, ‘bitcoin_donate’ ) ?></h2> 
        <form method=»post» action=»options.php» enctype=»multipart/form-data»> 
            <?php 
                settings_fields( ‘bitcoin_donate_options’ ); 
                do_settings_sections( __FILE__ ); 
            ?> 
            <p class=»submit»> 
                <input type=»submit» class=»button-primary» name=»submit» value=»<?php _e( ‘Save Changes’, ‘bitcoin_donate’ ) ?>»> 
            </p> 
        </form> 
    </div> 
    <?php 
} 
function bitcoin_donate_initialize_options() { 
    add_options_page( __( ‘Bitcoin Donate Options’, ‘bitcoin_donate’ ), __( ‘Bitcoin Donate Options’, ‘bitcoin_donate’ ), ‘administrator’, __FILE__, ‘bitcoin_donate_options_markup’ ); 
} 
add_action( ‘admin_menu’, ‘bitcoin_donate_initialize_options’ ); 
function bitcoin_donate_translations() { 
    load_plugin_textdomain( ‘bitcoin_donate’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/lang/’ ); 
} 
add_action(‘after_setup_theme’, ‘bitcoin_donate_translations’); 
 | 
В итоге
Теперь вы узнали, как разработать еще один совершенно новый плагин, который позволяет пользователям делать пожертвования через биткойны. Теперь вы можете инициализировать плагин, использовать шорткоды и добавить страницу настроек своему администратору WordPress.
Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже, и я обязательно вам помогу!