Intereting Posts
Короткие коды не разрешены в ответе вызова AJAX Ошибка «достаточных разрешений» для администратора после дублирования базы данных WP для новой установки WordPress Hook, который будет запущен при удалении медиафайла Включить выдержки из отрывка в теме wordpress двадцать тринадцать Как переписать URL-адрес WordPress для плагина Есть ли способ показать изображение с каждой категорией в виджете категории? Ajax-вызов с javascript в сообщении (не в очереди) Добавить дополнительное поле в окно меню навигации? рейтинг, доля и обзор для одной страницы WooCommerce Есть ли способ (плагин?), Чтобы ограничить пользователя возможностью редактировать только одну страницу? Выдержки – Форматирование. Почему wp_get_object_terms добавляет период после вывода терминов? Проверка происхождения запроса xmlrpc Отображать статьи, связанные с настраиваемым полем на странице В настоящее время используются уровни пользователей?

URI данных в пользовательских полях

Моя тема имеет возможность указывать миниатюру с помощью настраиваемых полей.

post_thumbnail – http://img.wordpressask.com/custom-field/mythumbnail.jpg

Я хотел бы использовать данные uri вместо изображения в настраиваемом поле.

Как это может быть сделано?

Причина, по которой я хочу сделать это, – это уменьшить HTTP-запрос на странице блога и странице портфолио.

Благодаря 🙂

Solutions Collecting From Web of "URI данных в пользовательских полях"

Возьмитесь за «save_post», а после нормальной смены метакласса создайте данные uri, используя php-функции base64_encode и file_get_contents .

С небольшим количеством логических пропусков, если это не необходимо (данные uri уже_saved).

В следующем примере я предполагаю, что URL-адрес эскиза сообщения задан в метамоксике, а имя поля – «post_thumbnail».

См. Комментарии в коде для получения дополнительной информации.

 add_action( 'save_post', 'post_thumb_to_data_uri' ); function post_thumb_to_data_uri( $post_id ) { // No auto saves if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // make sure the current user can edit the post $cap = get_post_type($post_id) == 'page' ? 'edit_page' : 'edit_post'; if ( ! current_user_can( $cap, $post_id ) ) return; // assure the data are sended by the form and ia correct url if ( ! isset($_POST['post_thumbnail']) || ! filter_var($_POST['post_thumbnail'], 'FILTER_VALIDATE_URL') ) return; // check the nonce if you have if ( ! isset($_POST['nonce']) || ! wp_verify_nonce('nonce', 'nonce_value') ) return; // skip if data uri already saved for the url $now_url = get_post_meta($post_id, 'post_thumbnail', true); $now_data = get_post_meta($post_id, '_post_thumbnail_datauri_src', true); if ($now_url && $now_data && $now_url == esc_url($_POST['post_thumbnail']) ) return; // get the path from the url $path = untrailingslashit(ABSPATH) . wp_make_link_relative($_POST['post_thumbnail']); // check file existence and type if ( ! file_exists($path) ) return; $mime = wp_check_filetype( $path ); if ( ! is_array($mime) || ! isset($mime['type']) || empty($mime['type']) || ! substr_count($mime['type'], 'image') // assure is an image ) return; $datauri = base64_encode( @file_get_contents($path) ); if ( empty($datauri) ) return; $src = 'data: ' . $mime['type'] . ';base64,' . $datauri; update_post_meta($post_id, '_post_thumbnail_datauri_src', $src); update_post_meta($post_id, 'post_thumbnail', esc_url($_POST['post_thumbnail']) ); } 

Вспомогательная функция поможет распечатать

 function the_thumbnail_uri( $post = null, $echo = true ) { if ( empty($post) ) global $post; if ( is_int($post) ) $post = get_post($post); if ( ! is_object($post) ) return; $thumb = get_post_meta($post->ID, '_post_thumbnail_datauri_src', true); $alt = apply_filters('the_title', $post->post_title ); if ( $thumb) $img = '<img src="' . $thumb . '" alt="' . esc_attr($alt) . '"/>'; if ( ! $echo ) return $img; echo $img; } 

В файлах шаблонов:

 while( have_posts() ) : the_post(); the_thumbnail_uri(); endwhile; 

Вне цикла:

 the_thumbnail_uri( $post ); // $post can be a post object or a post id