• НАЧАЛО
  • Услуги

AIT WEB DESIGN - изработка на сайт и СЕО оптимизация

  • НАЧАЛО
  • Услуги
  • No products in cart.
  • Начало
  • Articles posted by afilipov
  • Page 2
15.04.2026

Author: afilipov

Спрете Libwww-perl Access!

  • 0
afilipov
сряда, 09 август 2017 / Published in SEO Оптимизация, Код оптимизация, Трикове
Спрете Libwww-perl Access!

WordPress и Https

  • 0
afilipov
петък, 31 март 2017 / Published in Wordpress, Код оптимизация
# 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

Как да скрием и защитим wp – login.php и wp – admin директорията?

  • 0
afilipov
вторник, 01 ноември 2016 / Published in Wordpress, Трикове

1. Инсталирайте следния модул: Rename wp-login.php, след това направете login варианта на вашия сайт.

untitlewwww1

2. Отворете functions.php файла на темата, която ползвате и напишете следните редове:

 if (($_SERVER['PHP_SELF'] == '/wp-admin/index.php')and( !is_super_admin() ))
{
	wp_redirect( home_url() );
	exit();
}

Как да изтрием поленце от checkout формата на Woocommerce

  • 0
afilipov
петък, 14 октомври 2016 / Published in Wordpress, Код оптимизация, Трикове
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;
}

Как да променим SKU label-а във Woocommerce към Product Code

  • 0
afilipov
петък, 30 септември 2016 / Published in Wordpress, Код оптимизация
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

Частни ключове и сертификати за виртуален ПОС терминал към БОРИКА

  • 0
afilipov
сряда, 31 август 2016 / Published in Код оптимизация

Виртуалните ПОС терминали към авторизационната системата на БОРИКА осъществяват обмена на данни за транзакциите посредством цифрово подписани съобщения. За тази цел – виртуалните терминали изискват наличие на частни ключове и цифрови сертификати. Използваният криптографски алгоритъм е RSA, а хеширането – SHA-1. Частните ключове се генерират от клиента, след което с тях се създават заявки за сертификати, които се изпращат на обслужващата банка. Генерирането на частните ключове и заявките за сертификати може да стане с произволен инструмент- важно е да се спази изискването за формат и големина на ключа.

Един от най-популярните безплатни инструменти който може да генерира всички необходимо за реализацията на криптографските операции в Microsoft® Windows среда е Win32 OpenSSL:

http://haralanov.com

Изглед на OpenSSL в Microsoft® Windows среда

Light версията е достатъчна за генерирането на частните ключове, създаването на заявките за сертификати и направата на браузърен сертификат описани по-долу. 32-битовата версия работи добре и на 64-битови платформи. Има удобен инсталатор.

Изисква се наличие на Microsoft Visual C++ 2008 Redistributable Package.

Win 32 ОpenSSL – Връзка към сайта с всички актуални версии.

1. Генериране на три частни ключа

Изпълняват се следните команди в Win32 Openssl среда:

  1. genrsa -out privatekeyreal.key -des3 1024
    • въвежда се парола (минимум четири символа)
  2. genrsa -out privatekeytest.key -des3 1024
    • въвежда се парола (минимум четири символа)
  3. 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. Генериране на три заявки за сертификати

  1. req -new -key privatekeyreal.key -out sitenamereal.csr
    • въвежда се паролата зададена при генерирането на частният ключ
  2. req -new -key privatekeytest.key -out sitenametest.csr
    • въвежда се паролата зададена при генерирането на частният ключ
  3. 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 може да се пристъпи към внедряването на виртуалният ПОС терминал в уеб сайта за който е предназначен.

Документацията с подробно описание на виртуалният ПОС терминал към авторизационната система на БОРИКА може да бъде получена от обслужващата банка, която предоставя виртуалният ПОС терминал.
В общия случай – банките предоставят упътването след сключване на договор.

 

 

 

Източник: http://haralanov.com/techno/payments/34-chastni-kluchove-i-sertifikati-za-virtualen-pos-terminal-borika#частен-ключ-за-виртуален-пос-терминал-в-тестовата-система-на-борика

Уебинар: WordPress – първи настройки и сигурност

  • 0
afilipov
събота, 27 август 2016 / Published in Wordpress

Постави „Featured Image“ на публикация от зададено URL

  • 0
afilipov
понеделник, 25 юли 2016 / Published in Wordpress
// 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 );

WordPress, Woocommerce, метод на плащане PayPal и BGN FIX

  • 3
afilipov
сряда, 06 юли 2016 / Published in Wordpress, Код оптимизация
// 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;
}

Как сами да си създадем Widget в WordPress

  • 0
afilipov
вторник, 05 юли 2016 / Published in Wordpress, Код оптимизация

vv-1

Отворете 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");'));

?>
  • 1
  • 2
  • 3
  • 4

Търсене

Категории

  • CSS
  • SEO Оптимизация
  • WooCommerce
  • Wordpress
  • WordPress Модули
  • Код оптимизация
  • Трикове

Архиви

  • февруари 2026
  • юли 2020
  • юли 2018
  • февруари 2018
  • август 2017
  • март 2017
  • ноември 2016
  • октомври 2016
  • септември 2016
  • август 2016
  • юли 2016
  • юни 2016
  • май 2016
  • март 2016
  • юли 2012

УСЛУГИ

ВРЪЗКА С НАС

(+359) 888 898 797
Email: office@ait-webdesign.com

AIT WEB DESIGN
6300 Хасково, Ул. Хан Аспарух 9-11. България

Отвори в Google Maps

ПОСЛЕДНО ЗАВЪРШЕНИ ПРОЕКТИ

Етикети

  • НАЧАЛО
  • Услуги

Всички права запазени AIT WEB DESIGN 2026

НАГОРЕ