Как сделать форму обратной связи WordPress

Когда сайт уже готов или бизнес запущен пора переходить к общению с клиентами и посетителями.
Есть 2 простых и удобных способа общения — комментарии к статьям и получение обратной связи.
Сегодня мы рассмотрим второй вариант — разместить форму обратной связи и ждать писем клиента (далее…)

Как защититься от спама на своем сайте

Что такое спамовые комментарии, даже начинающим вебмастерам объяснять не нужно — все в интернете сталкивались с рекламными сообщениями, ссылками и прочими навязчивыми материалами, которые не только раздражают, но и способны навредить сайту.

Защита от спамовых комментариев, это одна из необходимых задач, которые каждому вебмастеру нужно решать еще на ранних этапах работы над сайтом. Чем старше сайт, и чем больше на нем посетителей, тем выше вероятность спам-атак. (далее…)

Как проверить размер изображения перед загрузкой в дашборде?

Сделал тему, надо чтобы минимальный размер загружаемой картинки был 740х400px.
Долго искал, как сделать программную проверку фоток при загрузке. Долго искал и нашел:

Следующий код вставить в файлfunctions.php

add_filter('wp_handle_upload_prefilter','wpse_28359_block_small_images_upload');
function wpse_28359_block_small_images_upload( $file )
{
 // Mime type with dimensions, check to exit earlier
 $mimes = array( 
 'image/jpeg',
 'image/png',
 'image/bmp',
 'image/x-windows-bmp',
 'image/gif'
 );

 if( !in_array( $file['type'], $mimes ) )
 return $file;

 $img = getimagesize( $file['tmp_name'] );
 $minimum = array( 'width' => 760, 'height' => 400 );

 if ( $img[0] < $minimum['width'] AND $img[1] > $minimum['height'] )
 $file['error'] = 
 'Загружаемая картинка слишком маленькая! Миникальная ширина картинки должна быть ' 
 . $minimum['width'] 
 . 'px. Uploaded image width is ' 
 . $img[0] . 'px';

 elseif ( $img[1] < $minimum['height'] AND $img[0] > $minimum['width'] )
 $file['error'] = 
 'Загружаемая картинка слишком маленькая! Миникальная высота картинки должна быть ' 
 . $minimum['height'] 
 . 'px. Uploaded image height is ' 
 . $img[1] . 'px';
 
 elseif ( $img[1] < $minimum['height'] AND $img[0] < $minimum['width'] )
 $file['error'] = 
 'Загружаемая картинка слишком маленькая! Миникальный размер картинки должен быть ' 
 . $minimum['width'] 
 . ' на ' 
 . $minimum['height'] . 'px';

 return $file;
}

 

WordPress — как направить пользователя на домашнюю страницу после входа в систему

Для перенаправления пользователя после авторизации на нужную вам страницу просто добавьте нижеследующий код в файл functions.php

#route user to homepage instead of wp profile page
function prevent_profile_access(){
	
	if (strpos ($_SERVER ['REQUEST_URI'] , 'wp-admin' )){
		$current_user = wp_get_current_user();
		wp_redirect ('/');
	}
}
add_action ('init' , 'prevent_profile_access');

Теперь при входе и выходе и выходе пользователь будет перенаправлен на главную страницу сайта.

Изменить страницу, на которую будет перенаправлен пользователь, можно на 6 строке

Как перенести посты в произвольный тип записи?

Вопрос:

Добрый день!
В категории «Х» есть записи. Я создал произвольный тип записи для них..
Вопрос: Как массово перенести записи с категории «Х» в произвольный тип записей?

Решение:

Логика:

  1. Получаем список постов в указанной категории
  2. циклом изменяем тип этих постов

Код:

<?php
	$my_posts = new WP_Query;
	$myposts = $my_posts->query( array( //Получаем записи
		'post_type' => 'post', // Указываем исходный тип записи
		'cat' => 4 // Указываем id категории из которой будем брать записи для преобразования.
	) );
	foreach( $myposts as $pst ){ //Цикл для изменения типа постов
		set_post_type( $pst->ID, 'page'  ); // Указываем нужный тип поста вместо "page"
	}
?>

FAQ

Вопрос: где эту функцию нужно писать? оформить функцией в functions.php и откуда-то вызвать? или просто выполнить ее в одном из шаблонов?

Ответ: я бы посоветовал вышеуказанную функцию вставить  в отдельный файл и запускать когда, когда это надо.

Файл поместить в корень сайта, в файл записать

<?php
	// подгружаем среду WP  
	require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
// дальше любой код
?>

 

Как определить, что в посте есть тег «ещё»?

Создавая один из проектов понадобилось выводить посты по разному, в зависимости от того, есть ли в посте тег «ещё» или «more» на английском.

Оказалось, что сделать это достаточно просто (далее…)

Разрешаем загружать только определенные типы файлов в WordPress

Оказалось, что разрешить загружать только определенные типы файлов очень легко:

add_filter('upload_mimes','restrict_mime');
function restrict_mime($mimes) {
$mimes = array(
                'jpg|jpeg|jpe' => 'image/jpeg',
                'gif' => 'image/gif',
);
return $mimes;
}

 

Простая загрузка файлов в темах и плагинах WordPress

Сейчас пишу проект, стараюсь не использовать сторонние плагины.

Была необходимость реализовать возможность загрузки файлов на сайт.

Оказалось, что в интернете не так уж и много решений, точнее много, но всё не то…

<?php
/**
 * Form builder helper
 *
 * @param string $label Field label
 * @return none
 */
function fileupload( $label ) { ?>
  <tr>
    <td class="left_label"> <?php
      echo $label; ?>
    </td>
    <td>
      <form name="uploadfile" id="uploadfile_form" method="POST" enctype="multipart/form-data" action="<?php echo $this->filepath.'#uploadfile'; ?>" accept-charset="utf-8" >
        <input type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" />
        <input class="button-primary" type="submit" name="uploadfile" id="uploadfile_btn" value="Upload"  />
      </form>
    </td>
  </tr>  <?php
}

/**
 * Handle file uploads
 *
 * @todo check nonces
 * @todo check file size
 *
 * @return none
 */
function fileupload_process() { 
  $uploadfiles = $_FILES['uploadfiles'];

  if (is_array($uploadfiles)) {

    foreach ($uploadfiles['name'] as $key => $value) {

      // look only for uploded files
      if ($uploadfiles['error'][$key] == 0) {

        $filetmp = $uploadfiles['tmp_name'][$key];

        //clean filename and extract extension
        $filename = $uploadfiles['name'][$key];

        // get file info
        // @fixme: wp checks the file extension....
        $filetype = wp_check_filetype( basename( $filename ), null );
        $filetitle = preg_replace('/\.[^.]+$/', '', basename( $filename ) );
        $filename = $filetitle . '.' . $filetype['ext'];
        $upload_dir = wp_upload_dir();

        /**
         * Check if the filename already exist in the directory and rename the
         * file if necessary
         */
        $i = 0;
        while ( file_exists( $upload_dir['path'] .'/' . $filename ) ) {
          $filename = $filetitle . '_' . $i . '.' . $filetype['ext'];
          $i++;
        }
        $filedest = $upload_dir['path'] . '/' . $filename;

        /**
         * Check write permissions
         */
        if ( !is_writeable( $upload_dir['path'] ) ) {
          $this->msg_e('Unable to write to directory %s. Is this directory writable by the server?');
          return;
        }

        /**
         * Save temporary file to uploads dir
         */
        if ( !@move_uploaded_file($filetmp, $filedest) ){
          $this->msg_e("Error, the file $filetmp could not moved to : $filedest ");
          continue;
        }

        $attachment = array(
          'post_mime_type' => $filetype['type'],
          'post_title' => $filetitle,
          'post_content' => '',
          'post_status' => 'inherit'
        );

        $attach_id = wp_insert_attachment( $attachment, $filedest );
        require_once( ABSPATH . "wp-admin" . '/includes/image.php' );
        $attach_data = wp_generate_attachment_metadata( $attach_id, $filedest );
        wp_update_attachment_metadata( $attach_id,  $attach_data );
      }
    }
  }
}
?>