WordPress: просмотреть все права пользователя

На одном из сайтов, которые я обслуживаю, была выявлена проблема: пользователь не может редактировать свой вопрос, хотя разработчик говорит, что может. Конечно же хотелось скомкать код и швырнуть разработчику в лицо, НО, прежде чем это сделать, надо убедиться, что проблема не на стороне сайта.

Первое, что мне пришло в голову — проверить, есть ли у пользователя права на редактирование. (далее…)

Как удалить стандартные стили при вставке галереи в запись

При вставке галереи в запись wordpress добавляет лишний CSS код. Есть несколько причин, чтобы отключить вывод css:

  1. Весь CSS код должен быть в отдельном файле
  2. Вставка CSS кода по середине страницы замедляет загрузку и отображение сайта

(далее…)

Выводим данные о теме в коде шаблона сайта

Когда я делал очередную тему на заказ, то в договоре было прописано, что я вывожу свои данные(данные создателя темы) на сайте клиента. Я много думал как качественнее и правильнее это сделать и в итоге я решил это сделать стандартными функциями wordpress. (далее…)

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

Сделал тему, надо чтобы минимальный размер загружаемой картинки был 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 строке

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

Создавая один из проектов понадобилось выводить посты по разному, в зависимости от того, есть ли в посте тег «ещё» или «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 );
      }
    }
  }
}
?>