# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
1. Инсталирайте следния модул: Rename wp-login.php, след това направете login варианта на вашия сайт.
2. Отворете functions.php файла на темата, която ползвате и напишете следните редове:
if (($_SERVER['PHP_SELF'] == '/wp-admin/index.php')and( !is_super_admin() ))
{
wp_redirect( home_url() );
exit();
}
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
unset($fields['billing']['billing_first_name']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
unset($fields['order']['order_comments']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_email']);
unset($fields['billing']['billing_city']);
return $fields;
}
function translate_woocommerce($translation, $text, $domain) {
if ($domain == 'woocommerce') {
switch ($text) {
case 'SKU':
$translation = 'Product Code';
break;
case 'SKU:':
$translation = 'Product Code:';
break;
}
}
return $translation;
}
add_filter('gettext', 'translate_woocommerce', 10, 3);
Източник: https://gist.github.com/dannyconnolly/da6f1a2d95dc826ccdcd
Виртуалните ПОС терминали към авторизационната системата на БОРИКА осъществяват обмена на данни за транзакциите посредством цифрово подписани съобщения. За тази цел – виртуалните терминали изискват наличие на частни ключове и цифрови сертификати. Използваният криптографски алгоритъм е RSA, а хеширането – SHA-1. Частните ключове се генерират от клиента, след което с тях се създават заявки за сертификати, които се изпращат на обслужващата банка. Генерирането на частните ключове и заявките за сертификати може да стане с произволен инструмент- важно е да се спази изискването за формат и големина на ключа.
Един от най-популярните безплатни инструменти който може да генерира всички необходимо за реализацията на криптографските операции в Microsoft® Windows среда е Win32 OpenSSL:
Изглед на OpenSSL в Microsoft® Windows среда
Light версията е достатъчна за генерирането на частните ключове, създаването на заявките за сертификати и направата на браузърен сертификат описани по-долу. 32-битовата версия работи добре и на 64-битови платформи. Има удобен инсталатор.
Изисква се наличие на Microsoft Visual C++ 2008 Redistributable Package.
Win 32 ОpenSSL – Връзка към сайта с всички актуални версии.
1. Генериране на три частни ключа
Изпълняват се следните команди в Win32 Openssl среда:
genrsa -out privatekeyreal.key -des3 1024- въвежда се парола (минимум четири символа)
genrsa -out privatekeytest.key -des3 1024- въвежда се парола (минимум четири символа)
genrsa -out privatekeyetlog.key -des3 1024- въвежда се парола (минимум четири символа)
В резултат от изпълнението трите команди – в работната директория на OpenSSL Win32 Toolkit се появяват три файла с разширениe *.key:
- privatekeyreal.key – частен ключ за виртуален ПОС терминал в реална система
- privatekeytest.key – частен ключ за виртуален ПОС терминал в тестова система
- privatekeyetlog.key – частен ключ за система за наблюдение на транзакции на виртуален ПОС терминал
Създадените два частни ключа privatekeyreal.key и privatekeytest.key трябва да се запишат на уеб сървъра.
Задължително да се защитят, така че да бъдат достъпни само за скрипта, който ще ги използва- програмния код на виртуалният пос терминал.
Най-лесният начин за защита е да се запишат двата ключа в директория различна от публично достъпната /public_html
В случай, че виртуалният ПОС терминал ще обслужва плащания за самолетни билети, коли под наем (rent-a-car) или резервации чрез системата на
amadeus България – e-Power Amadeus Internet Booking Engine, частният ключ трябва да бъдат се именува epowerPRIVATE.key
2. Генериране на три заявки за сертификати
req -new -key privatekeyreal.key -out sitenamereal.csr- въвежда се паролата зададена при генерирането на частният ключ
req -new -key privatekeytest.key -out sitenametest.csr- въвежда се паролата зададена при генерирането на частният ключ
req -new -key privatekeyetlog.key -out sitenameetlog.csr- въвежда се паролата зададена при генерирането на частният ключ
3. Изпращане на заявките за сертификати на обслужващата банка за подпис
Трите заявки за сертификати от т.2 се изпращат на обслужващата банка за подпис:
- sitenamereal.csr – заявка за сертификат за реалната система
- sitenametest.csr – заявка за сертификат за тестовата система
- sitenameetlog.csr – заявка за сертификат за системата eTlog
3а. В отговор на изпратените заявки, банката трябва да върне три подписани сертификата:
- sitenamereal.cеr – сертификат за реалната система
- sitenametest.cеr – сертификат за тестовата система
- sitenameetlog.cеr – сертификат за системата eTlog
4. Сертификат за браузър за наблюдение на транзакции
pkcs12 -export -inkey privatekeyetlog.key -in sitenameetlog.cer -out sitenameetlog.p12
Получният файл sitenameetlog.p12 се импортира в браузър на клиента, който ще наблюдава транзакции чрез eltog система.
Имената на файловете в примерите по-горе не са задължителни. Разширенията на файловете- също, но от гледна точка на удобството е хубаво да се указват по описания в примерите начин.
След успешно изпълнение на точки от 1 до 4 може да се пристъпи към внедряването на виртуалният ПОС терминал в уеб сайта за който е предназначен.
Документацията с подробно описание на виртуалният ПОС терминал към авторизационната система на БОРИКА може да бъде получена от обслужващата банка, която предоставя виртуалният ПОС терминал.
В общия случай – банките предоставят упътването след сключване на договор.
// Add Featured Image to Post
$image_url = 'http://s.wordpress.org/style/images/wp-header-logo.png'; // Define the image URL here
$upload_dir = wp_upload_dir(); // Set upload folder
$image_data = file_get_contents($image_url); // Get image data
$filename = basename($image_url); // Create image file name
// Check folder permission and define file location
if( wp_mkdir_p( $upload_dir['path'] ) ) {
$file = $upload_dir['path'] . '/' . $filename;
} else {
$file = $upload_dir['basedir'] . '/' . $filename;
}
// Create the image file on the server
file_put_contents( $file, $image_data );
// Check image file type
$wp_filetype = wp_check_filetype( $filename, null );
// Set attachment data
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name( $filename ),
'post_content' => '',
'post_status' => 'inherit'
);
// Create the attachment
$attach_id = wp_insert_attachment( $attachment, $file, $post_id );
// Include image.php
require_once(ABSPATH . 'wp-admin/includes/image.php');
// Define attachment metadata
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
// Assign metadata to attachment
wp_update_attachment_metadata( $attach_id, $attach_data );
// And finally assign featured image to post
set_post_thumbnail( $post_id, $attach_id );
// allow BGN for WooCommerce and PayPal
add_filter( 'woocommerce_currencies', 'add_bgn_currency' );
function add_bgn_currency( $currencies ) {
$currencies['BGN'] = __( 'Bulgarian Lev (лв.)', 'woocommerce' );
return $currencies;
}
add_filter('woocommerce_currency_symbol', 'add_bgn_currency_symbol', 10, 2);
function add_bgn_currency_symbol( $currency_symbol, $currency ) {
switch( $currency ) {
case 'BGN': $currency_symbol = 'лв.'; break;
}
return $currency_symbol;
}
// allow BGN for WooCommerce and PayPal
add_filter( 'woocommerce_paypal_supported_currencies', 'add_bgn_paypal_valid_currency' );
function add_bgn_paypal_valid_currency( $currencies ) {
array_push ( $currencies , 'BGN' );
return $currencies;
}
// Convert BGN to EUR for PayPal payments
add_filter('woocommerce_paypal_args', 'convert_bgn_to_eur');
function convert_bgn_to_eur($paypal_args){
if ( $paypal_args['currency_code'] == 'BGN'){
$convert_rate = 1.955; //set the converting rate
$paypal_args['currency_code'] = 'EUR'; //change BGN to EUR
$i = 1;
while (isset($paypal_args['amount_' . $i])) {
$paypal_args['amount_' . $i] = round( $paypal_args['amount_' . $i] / $convert_rate, 2);
++$i;
}
if ( $paypal_args['discount_amount_cart'] > 0 ) {
$paypal_args['discount_amount_cart'] = round( $paypal_args['discount_amount_cart'] / $convert_rate, 2);
}
}
return $paypal_args;
}
Отворете functions.php на Вашата тема и поставете следния код:
require get_template_directory() . '/widgets/agenda.php';
agenda.php
<?php
class agenda_widget extends WP_Widget {
function agenda_widget() {
parent::WP_Widget(false, $name = 'Get posts from different post types');
}
function widget($args, $instance){
extract( $args );
$title = apply_filters('widget_title', $instance['title']);
$posttype = $instance['posttype'] ? $instance['posttype'] : 'post';
$orderby = $instance['orderby'] ? $instance['orderby'] : 'ID';
$orderbyad = $instance['orderbyad'] ? $instance['orderbyad'] : 'ASC';
$limit = $instance['limit'] ? $instance['limit'] : 5;
$bottom = $instance['bottom'];
$args = array( 'posts_per_page' => $limit, 'orderby' => $orderby, 'order'=>$orderbyad, 'post_type' => $posttype);
query_posts($args);
$trainingen = get_posts( $args );
?>
<?php echo $before_widget; ?>
<div class="widget-agenda">
<h3><?php echo $title ?></h3>
<ul>
<?php foreach ($trainingen as $training): ?>
<?php if($training->dates) $dates = json_decode($training->dates) ?>
<li><a href="<?php echo get_permalink($training->ID)?>"><?php //echo date_i18n(get_option("date_format"), strtotime($dates[0])) ?><?php _e($training->post_title); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<?php echo $after_widget; ?>
<?php
}
function update($new_instance, $old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['posttype'] = strip_tags($new_instance['posttype']);
$instance['orderby'] = strip_tags($new_instance['orderby']);
$instance['orderbyad'] = strip_tags($new_instance['orderbyad']);
$instance['limit'] = strip_tags($new_instance['limit']);
return $instance;
}
function form($instance){
$title = esc_attr($instance['title']);
$posttype = esc_attr($instance['posttype']);
$orderby = esc_attr($instance['orderby']);
$orderbyad = esc_attr($instance['orderbyad']);
$limit = esc_attr($instance['limit']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Select Post Type:'); ?></label>
<?
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'names'; // names or objects, note names is the default
$operator = 'and'; // 'and' or 'or'
$post_types = get_post_types( $args, $output, $operator );
?>
<select id="<?php echo $this->get_field_id('posttype'); ?>" name="<?php echo $this->get_field_name('posttype'); ?>">
<option value="post" <? if ($posttype == 'post'){ ?>selected<? } ?>>post</option>
<?
foreach ( $post_types as $post_type )
{
?>
<option value="<?=$post_type;?>" <? if ($posttype == $post_type){ ?>selected<? } ?>><?=$post_type;?></option>
<?
}
?>
</select></br>
<label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e('Order by'); ?></label>: <select id="<?php echo $this->get_field_id('orderby'); ?>" name="<?php echo $this->get_field_name('orderby'); ?>">
<option value="ID" <? if ($orderby == 'ID'){ ?>selected<? } ?>>ID</option>
</select></br>
<label for="<?php echo $this->get_field_id('orderbyad'); ?>"><?php _e('Order'); ?></label>: <select id="<?php echo $this->get_field_id('orderbyad'); ?>" name="<?php echo $this->get_field_name('orderbyad'); ?>">
<option value="ASC" <? if ($orderbyad == 'ASC'){ ?>selected<? } ?>>ASC</option>
<option value="DESC" <? if ($orderbyad == 'DESC'){ ?>selected<? } ?>>DESC</option>
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e('Limit'); ?></label>
<input class="tiny-text" id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="number" value="<?php echo $limit; ?>" />
</p>
<?php
}
}
add_action('widgets_init', create_function('', 'return register_widget("agenda_widget");'));
?>









