Created
June 15, 2017 18:07
-
-
Save eto4detak/293f61f340e2b99b4dfa647aacf00614 to your computer and use it in GitHub Desktop.
wp данные для плагина
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: MiniWidget | |
Plugin URI: http ://example.com/wordpress-plugins/halloween-plugin | |
Description: This is a brief description of my plugin | |
Version: 1.0 | |
Author: ANATOLI | |
Author URI: http://example.com | |
License: GPLv2 | |
*/ | |
register_activation_hook( __FILE__ , 'prowp_install' ); | |
function prowp_install() { | |
global $wp_version; | |
if ( version_compare( $wp_version, '3.5', '<' ) ) { | |
wp_die( 'This plugin requires WordPress version 3.5 or higher.' ); | |
} | |
} | |
?> | |
<?php | |
register_deactivation_hook( FILE , 'prowp_deactivate()' ); | |
function prowp_deactivate() { | |
// делаем то, что нужно | |
> | |
?> | |
/*======================================================== | |
защита от подделки межсайтовых запросов (CSRF) | |
wp_nonce_field() - число, использованное единожды | |
prowp_settings_form_save - уникальная строка, описание действия | |
prowp_nonce_field - уникальное поле | |
========================================================*/ | |
<form method="post"> | |
<?php wp_nonce_field( 'prowp_settings_form_save', 'prowp_nonce_field' ); ?> | |
Enter your name: | |
<input type="text" name="text" > | |
<br/> | |
<input type="submit" name="submit" value="Save Options" /> | |
</form> | |
<?php | |
function prowp_update_options() { | |
if ( isset( $_POST['submit'] ) ) { | |
// проверяем временное значение из соображений безопасности | |
check_admin_referer( 'prowp_settings_form_save', 'prowp_nonce_field' ); | |
// проверка произведена, теперь делаем то, что нужно | |
} | |
}?> | |
<?php | |
$link = 'my-url.php?action=delete&ID=15'; | |
?> | |
<a href="<?php echo wp_nonce_url( $link, 'prowp_nonce_url_check' ); ?>">Delete</a> | |
<!-- Вы видите, что функция sanitize_email() удаляет все дополнительные пробелы | |
и непригодные символы из присланного электронного адреса --> | |
<?php | |
$sanitized_email = sanitize_email( ' [email protected]!' ); | |
echo $sanitized email; // отобразит: [email protected] | |
// wp_kses - обрезка тегов | |
$allowed_tags = array( | |
'strong' => | |
array (), | |
'a' => array(Знай свои зацепки: действия и фильтры 195 | |
'href' => array(), | |
'title' => array() | |
) | |
); | |
$html = ' | |
<a href="#" class="external">link</a> | |
. This is <b>bold</b> | |
and <strong>strong</strong> | |
'; | |
echo wp_kses( $html, $allowed_tags ); | |
?> | |
<?php | |
$bodytag = str_ireplace("%body%", "black", "<body text=%BODY%> | |
"); | |
echo $bodytag; // | |
<body text=black> | |
?> | |
/*======================================================== | |
* гугл аналитика на все страниц | |
========================================================*/ | |
<?php | |
add_action( 'wp_footer', 'prowp_site_analytics' ); | |
function prowp_site_analytics() { | |
?> | |
<script type="text/javascript"> | |
var gaDsHost = (("https:" == document.location.protocol) ? | |
"https://ssl." : "http://www."); | |
document.write(unescape("%3Cscript src='" + gaDsHost + | |
'google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script> | |
<script type="text/javascript"> | |
var pageTracker = _gat._getTracker("UA-XXXXXX-XX"); | |
pageTracker._trackPageview(); | |
</script> | |
<?php | |
} | |
?> | |
/*======================================================== | |
* добавить данныне плагины | |
========================================================*/ | |
<?php add_option( 'prowp_display_mode', 'Fright Night' ); ?> | |
<?php$prowp_options_arr = array( | |
'prowp_display_mode' => | |
'Fright Night', | |
'prowp_default_browser' => 'Chrome', | |
'prowp_favorite_book' => 'Professional WordPress', | |
); | |
update_option( 'prowp_plugin_options', $ | |
); | |
?> | |
<?php $prowp_options_arr = get_option( 'prowp_plugin_options' ); | |
$prowp_display_mode = $prowp_options_arr['prowp_display_mode']; ?> | |
<?php delete_option( 'prowp_display_mode' ); ?> | |
/*======================================================== | |
* add Menu | |
========================================================*/ | |
<?php | |
// создаем произвольное меню для плагина | |
add_action( 'admin_menu', 'prowp_create_menu' ); | |
function prowp_create_menu() { | |
// создаем новое меню верхнего уровня | |
add_menu_page( 'Halloween Plugin Page', 'Halloween Plugin', | |
'manage_options', 'prowp_main_menu', 'prowp_main_plugin_page', | |
plugins_url( '/images/wordpress.png', FILE ) ); | |
// создаем подпункты меню: настройка и поддержка | |
add_submenu_page( 'prowp_main_menu', 'Halloween Settings Page', | |
'Settings', 'manage_options', 'halloween_settings', | |
'prowp_settings_page' ); | |
add_submenu_page( 'prowp_main_menu', 'Halloween Support Page', | |
'Support', 'manage_options', 'halloween_support', 'prowp_support_page' ); | |
// вызываем функцию для регистрации настроек | |
add_action( 'admin_init', 'prowp_register_settings' ); | |
} | |
?> | |
<?php | |
function prowp_register_settings() { | |
// регистрируем настройки | |
//1й- имя группы параметров | |
//2й- иникальное имя | |
//3й- функия для очистки неверных значений и хака | |
register_setting( 'prowp-settings-group', 'prowp_options', | |
'prowp_sanitize_options' ); | |
}?> | |
<!-- добавление подпункта меню в меню Настройки. --> | |
<?php | |
add_action( 'admin_menu', 'prowp_create_settings_submenu' ); | |
function prowp_create_settings_submenu() { | |
// 1-название страниы | |
// 2-название подпункта | |
// 3-видимость меню(manage_options-только админы) | |
// 4-ID | |
// 5-функция для построения страницы параметров | |
add_options_page( 'Halloween Settings Page', 'Halloween Settings', | |
'manage_options', 'halloween_settings_menu', 'prowp_settings_page' ); | |
> | |
?> | |
<?php | |
// | |
function prowp_settings_page() { | |
?> | |
<div class="wrap"> | |
<h2>Halloween Plugin Options</h2> | |
<form method="post" action="options.php"> | |
//settings_fields - связать с группой настроек задаваемой register_setting | |
<?php settings_fields( 'prowp-settings-group' ); ?> | |
//загрузить массив параметров | |
<?php $prowp_options = get_option( 'prowp_options' ); ?> | |
<table class="form-table"> | |
<tr valign="top"> | |
<th scope="row">Name</th> | |
//$prowp_options['option_name'] - переменная option_name | |
<td><input type="text" name="prowp_options[option_name]" value="<?php echo esc_attr( $prowp_options['option_name'] ); ?>" /></td> | |
</tr> | |
<tr valign="top"> | |
<th scope="row">Email</th> | |
<td><input type="text" name="prowp_options[option_email]" value="<?php echo esc_attr( $prowp_options['option_email'] ); ?>" /></td> | |
</tr> | |
<tr valign="top"> | |
<th scope="row">URL</th> | |
<td><input type="text" name="prowp_options[option_url]" value="<?php echo esc_url( $prowp_options['option_url'] ); ?>" /></td> | |
</tr> | |
</table> | |
<p class="submit"> | |
<input type="submit" class="button-primary" value="Save Changes" /> | |
</p> | |
</form> | |
</div> | |
<?php } ?> | |
<?php | |
function prowp_sanitize_options( $input ) { | |
$input['option_name'] = sanitize_text_field( $input['option_name'] ); | |
$input['option_email'] = sanitize_email( $input['option_email'] ); | |
$input['option_unl'] = esc_url( $input['option_url'] ); | |
return $input; | |
} | |
?> | |
<?php | |
// выполняем функцию раздела настроек | |
add_action( 'admin_init', 'prowp_settings_init' ); | |
function prowp_settings_init() { | |
// создаем новый раздел настроек в Параметры > Чтение | |
//1-ID | |
//2-название на выходе | |
//3-функция для отображения | |
//4-страница настроек: general, w riting, reading, discussion, media, privacy и permalink. | |
add_settings_section( 'prowp_setting_section', 'Halloween Plugin Settings', 'prowp_setting_section', 'reading' ); | |
// регистрируем индивидуальные настройки | |
//1-ID | |
//2-название поля | |
//3-функция для отображения поля | |
//4-страница настроек: general, w riting, reading, discussion, media, privacy и permalink. | |
//5- имя раздела, в который добавляется поле | |
add_settings_field( 'prowp_setting_enable_id', 'Enable Halloween Feature?', 'prowp_setting_enabled', 'reading', 'prowp_setting_section' ); | |
add_settings_field( 'prowp_saved_setting_name_id', 'Your Name', 'prowp_setting_name', 'reading', 'prowp_setting_section' ); | |
// регистрируем настройки с помощью массива значений | |
//1-группа параметров | |
//2-имя парметра УНИКАЛЬНО | |
//3-НЕОБЯЗАТЕЛЬНО функция для доп очистки | |
register_setting( 'reading', 'prowp_setting_values', 'prowp_sanitize_settings' ); | |
} | |
function prowp_sanitize_settings( $input ) { | |
$input['enabled'] = ( $input['enabled'] == 'on' ) ? 'on' : ''; | |
$input['name'] = sanitize_text_field( $input['name'] ); | |
return $input; | |
} | |
// задать подзаголовок для раздела настроек(инфа) | |
function prowp_setting_section() { | |
echo '<p>Configure the Halloween plugin options below</p>'; | |
} | |
// отобразим поля | |
function prowp_setting_enabled() { | |
//получить настроики плагина | |
$prowp_options = get_option( 'prowp_setting_values' ); | |
//отобразить форму с чексбоксами | |
//1-параметр для сравнения | |
//2-параметр для сравнения | |
//3-отображать значение или возвращать его | |
echo '<input '.checked( $prowp_options['enabled'], 'on', false ).' name="prowp_setting_values[enabled]" type="checkbox" /> Enabled'; | |
} | |
// create the text field setting to save the name | |
function prowp_setting_name() { | |
//load the option value | |
$prowp_options = get_option( 'prowp_setting_values' ); | |
//display the text form field | |
echo '<input type="text" name="prowp_setting_values[name]" value="'.esc_attr( $prowp_options['name'] ).'" />'; | |
} | |
?> | |
<?php add_meta_box( $id, $title, $callback, $page, $context, $priority, $callback_args ); ?> | |
<!-- Каждый параметр помогает определить, где и как отображается метаполе. | |
$id (атрибут ID CSS для метаполя); | |
$title (название страницы, отображаемое в заголовке метаполя); | |
$callback (имя произвольной функции для отображения в информации метаполя); | |
$page (страница, на которой должно отображаться метаполе, — ' post' , 'page' или название индивидуального типа записи); | |
$context (часть страницы, в которой должно быть отображено метаполе, — 'normal', 'advanced' или 'side'); | |
$priority (где именно в выбранной части страницы должно отображаться метаполе — 'high', 'core', 'default' или 'low'); | |
$callback_args (аргументы для передачи функции обратного вызова). --> | |
<?php | |
add_action( 'add_meta_boxes', 'prowp_meta_box_init' ); | |
// функции для добавления метаполя и сохранения данных | |
function prowp_meta_box_init() { | |
// создаем произвольное метаполе | |
add_meta_box( 'prowp-meta', 'Product Information', 'prowp_meta_box', 'post', 'side', 'default' );} | |
//отобразим мета-поля | |
function prowp_meta_box( $post, $box ) { | |
// извлекаем значения произвольного метаполя | |
$prowp_featured = get_post_meta( $post->ID, '_prowp_type', true ); | |
$prowp_price = get_post_meta( $post->ID, '_prowp_price', true ); | |
// временные значения из соображений безопасности | |
wp_nonce_field( plugin_basename( __FILE__ ), 'prowp_save_meta_box' ); | |
// форма метаполя | |
echo '<p>Price: <input type="text" name="prowp_price" value="'.esc_attr( $prowp_price ).'" size="5" /></p>'; | |
echo '<p>Type: | |
<select name="prowp_product_type" id="prowp_product_type"> | |
<option value="0" ' .selected( $prowp_featured, 'normal', false ). '>Normal</option> | |
<option value="special" ' .selected( $prowp_featured, 'special', false ). '>Special</option> | |
<option value="featured" ' .selected( $prowp_featured, 'featured', false ). '>Featured</option> | |
<option value="clearance" ' .selected( $prowp_featured, 'clearance', false ). '>Clearance</option> | |
</select></p>'; | |
} | |
// сохранить мотополя | |
add_action( 'save_post', 'prowp_save_meta_box' ); | |
function prowp_save_meta_box( $post_id ) { | |
// обрабатываем данные формы, если установлена переменная $_POST | |
if( isset( $_POST['prowp_product_type'] ) ) { | |
// если включено автосохранение, пропускаем этап сохранения данных метаполя | |
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) | |
return; | |
//проверяем временное значение из соображений безопасности | |
check_admin_referer( plugin_basename( __FILE__ ), 'prowp_save_meta_box' ); | |
// сохраняем данные метаполя в произвольных полях записи, используя префикс ID | |
//1-post_id | |
//2-имя метаполя если с _ то не отображает в редакторе записи | |
//3-новое значение матаключа | |
update_post_meta( $post_id, '_prowp_type', sanitize_text_field( $_POST['prowp_product_type'] ) ); | |
update_post_meta( $post_id, '_prowp_price', sanitize_text_field( $_POST['prowp_price'] ) ); | |
}} | |
?> | |
//отобразить мета поля где нада | |
<?php | |
$prowp_type = get_post_meta( $post->ID, '_prowp_type', true ); | |
$prowp_price = get_post_meta( $post->ID, '_prowp_price', true ); | |
echo '<p>Price: ' .esc_html( $prowp_price ). '</p>'; | |
echo '<p>Type: ' .esc_html( $prowp_type ). '</p>'; | |
?> | |
/*======================================================== | |
* шорт коды | |
========================================================*/ | |
<?php | |
function shortcode_callback( $atts ) { | |
//поставить атрибуты шорткода | |
// 1-масив стандарт | |
// 2-масив параметров | |
// 3-имя шорткода | |
$atts = shortcode_atts( array( | |
'foo' => 'no foo', | |
'bar' => 'default bar', | |
), $atts, 'bartag' ); | |
return 'bartag: ' . esc_html($atts['foo']) . ' ' . esc_html($atts['bar']); | |
} | |
// в результате шоткод: [bartag foo="koala" bar="bears"] | |
// выведет: bartag: koala bears | |
?> | |
<?php | |
// Код shortcode atts: wp-includes/shortcodes.php | |
function shortcode_atts( $pairs, $atts, $shortcode = '' ) { | |
$atts = (array)$atts; | |
$out = array(); | |
foreach ($pairs as $name => $default) { | |
if ( array_key_exists($name, $atts) ) | |
$out[$name] = $atts[$name]; | |
else | |
$out[$name] = $default; | |
} | |
/** | |
* Filters a shortcode's default attributes. | |
* | |
* If the third parameter of the shortcode_atts() function is present then this filter is available. | |
* The third parameter, $shortcode, is the name of the shortcode. | |
* | |
* @since 3.6.0 | |
* @since 4.4.0 Added the `$shortcode` parameter. | |
* | |
* @param array $out The output array of shortcode attributes. | |
* @param array $pairs The supported attributes and their defaults. | |
* @param array $atts The user defined shortcode attributes. | |
* @param string $shortcode The shortcode name. | |
*/ | |
if ( $shortcode ) { | |
$out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts, $shortcode ); | |
} | |
return $out; | |
} | |
?> | |
/*======================================================== | |
* консольный виджет | |
========================================================*/ | |
<?php | |
add_action( 'wp_dashboard_setup', 'prowp_add_dashboard_widget' ); | |
// вызываем функцию для создания консольного виджета | |
// 1-слаг ID виджета | |
// 2-имя виджета | |
// 3-функция для отображения контента виджета | |
function prowp_add_dashboard_widget() { | |
wp_add_dashboard_widget( 'prowp_dashboard_widget', | |
'Pro WP Dashboard Widget', 'prowp_create_dashboard_widget' ); | |
> | |
// функция для отображения содержания консольного виджета | |
function prowp_create_dashboard_widget() { | |
echo '<p>Hello World! This is my Dashboard Widget</p>'; | |
} | |
?> | |
/*======================================================== | |
* произвольные таблицы | |
========================================================*/ | |
<?php | |
// Регистрирует функцию, которая будет срабатывать во время активации плагина. | |
// 1-Путь до PHP файла, в котором находится функция обратного вызова, указанная во втором параметре $callback | |
// 2-функция | |
register_activation_hook( __FILE__ , 'prowp_install' ); | |
function prowp_install() { | |
global $wpdb; | |
// задаем имя произвольной таблицы | |
$table_name = $wpdb->prefix .'prowp_data'; | |
// создаем запрос для создания новой таблицы | |
$sql = "CREATE TABLE " . $table_name ." ( | |
id mediumint(9) NOT NULL AUTO_INCREMENT, | |
time bigint(ll) DEFAULT '0' NOT NULL, | |
name tinytext NOT NULL, | |
text text NOT NULL, | |
url VARCHAR(55) NOT NULL, | |
UNIQUE KEY id (id) | |
);"; | |
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); | |
// выполняем запрос для создания таблицы | |
dbDelta( $sql ); | |
// устанавливаем версию структуры таблицы | |
$prowp_db_version = '1.0'; | |
// сохраняем номер версии структуры таблицы | |
add_option( 'prowp_db_version', $prowp_db_version ); | |
} | |
$installed_ver = get_option( 'gmp_db_version' ); | |
if( $installed_ver != $prowp_db_version ) { | |
// обновляем таблицу | |
// обновляем версию таблицы | |
update_option( 'gmp_db_version', $prowp_db_version ); | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment