Сделайте свои собственные шорткоды и многое другое с помощью этих 7 хаков WordPress

Плагины меня беспокоят — я вижу длинный список из них, каждый из которых регистрирует свои собственные хуки и фильтры и… эй. Иногда можно найти простое решение с помощью нескольких строк в вашем файле functions.php. Вот 10 наших фаворитов.

Обратите внимание, что functions.php является частью вашей темы, и любые взломы, которые вы там размещаете, будут потеряны при смене темы. Вам нужно будет скопировать тех, кого вы хотите сохранить, в новую тему — это совсем не сложно, но что-то нужно иметь в виду, если ваш сайт внезапно сломается и не может понять, почему. Если вы допустите ошибку при их кодировании, вы столкнетесь с пустой страницей (полное руководство по работе с 500 ошибками сервера и пустыми страницами в WordPress).

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

Добавить миниатюры в админку

Если вы только добавляете миниатюры сообщений

, может быть очень полезно сразу увидеть, какие сообщения еще не содержат миниатюру — этот фрагмент добавит новый столбец на экран администратора при просмотре Все сообщения. Вы можете изменить размер, настроив переменные в массиве (100,200), который определяет максимальную ширину и высоту.


add_filter('manage_posts_columns', 'posts_columns', 5);
add_action('manage_posts_custom_column', 'posts_custom_columns', 5, 2);
function posts_columns($defaults){
$defaults['post_thumbs'] = __('Thumbs');
return $defaults;
}
function posts_custom_columns($column_name, $id){
if($column_name === 'post_thumbs'){
echo the_post_thumbnail( array(100,200) );
}
}

Вы должны получить что-то вроде этого:

после списка-превью

Создайте свой собственный шорткод для фрагментов JS

Внедрение JavaScript непосредственно в контент публикации может быть проблематичным (но возможно, см. Взлом TinyMCE далее в статье), особенно когда эти фрагменты часто меняются, что приводит к повреждению всех текущих сообщений. Если встраиваемый вами JavaScript-код включает в себя атрибут size, у вас также могут возникнуть проблемы, когда тема меняется, и вдруг больше ничего не подходит. Или, может быть, вы просто устанете вставлять одно и то же снова и снова. В любом случае шорткод может очень помочь.

Вот фрагмент кода, который я сделал, чтобы встроить еженедельный чат, который использует бесплатный сервис tlk.io. Использование шорткода чат, и с учетом одного атрибута комнаты, он встраивает соответствующий код, указывающий на правильный адрес чата — или в этом случае по умолчанию используется общая комната «технофилии».


function chatroom($atts){
extract(shortcode_atts(array(
'room' => 'technophilia'
), $atts));
return '
';
}
add_shortcode('chat','chatroom');

Убить шорткод

Если вы больше не хотите использовать короткий код, вы можете найти его в выходных данных. Этот простой код удалит их, если хотите, короткий код «очистит» — хотя он не влияет на базу данных, а только на вывод содержимого публикации.


function shortcode_cleaner() {
remove_shortcode( 'chat' );
add_shortcode( 'chat', 'my_remove_shortcode' );
}
add_action( 'init', 'shortcode_cleaner' );
function my_remove_shortcode(){
return '';
}

Извлечь видео YouTube из поста

Избранные изображения были введены в версии 2.9, чтобы дать каждому посту одно центральное репрезентативное изображение, но что, если ваш пост больше о видео? Вы можете сделать снимок экрана и использовать его в качестве показанного изображения, или же вы можете извлечь видео и вставить его вместо показанного изображения. Вызовите эту функцию из цикла, чтобы получить URL-адрес YouTube, который вы хотите вернуть.


function video_from_post() {
global $post;
$return = array();
preg_match('|http://www.youtube.com/watch\?v=([a-zA-Z0-9_\-]+)|', $post->post_content, $matches);
$v = $matches[1];
$return[0] = $post;
$return[1] = $v;
return $return;
}

Вы также можете воспользоваться следующим фрагментом, который фильтрует записи для удаления URL-адресов YouTube (поскольку вы будете использовать их в других местах).


function remove_youtube ($content) {
$search = '/http:\/\/www\.youtube\.com\/watch\?(.*?)v=([a-zA-Z0-9_\-]+)(\S*)/i';
$content = preg_replace($search, "", $content, 1);
return $content;
}
add_filter('the_content', 'remove_youtube');

Остановите Визуальный Редактор, Разделяющий HTML

Визуальный редактор WordPress — TinyMCE — отлично подходит для большинства пользователей, и его можно расширить, чтобы сделать еще больше с плагином TinyMCE Advanced

, Тем, кто хочет немного меньше присматривать за своим кодом, этот небольшой фрагмент не позволит TinyMCE убирать теги, расширяя список допустимых элементов, позволяя вам встраивать такие элементы, как iFrames или указывать классы для элементов.


function fb_change_mce_options($initArray) {
// Comma separated string of extended tags
$ext = 'pre[id|name|class|style|lang|escaped],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
if ( isset( $initArray['extended_valid_elements'] ) ) {
$initArray['extended_valid_elements'] .= ',' . $ext;
} else {
$initArray['extended_valid_elements'] = $ext;
}
$initArray['verify_html'] = false;
return $initArray;
}
add_filter('tiny_mce_before_init', 'fb_change_mce_options');

Наконец, это предотвращает удаление JavaScript, но имейте в виду, что это открывает большую дыру в безопасности в средах с несколькими авторами.


function disable_kses_content() {
remove_filter('content_save_pre', 'wp_filter_post_kses');
}
add_action('init','disable_kses_content',20);

Бесплатный сайт Thumbnailer

WordPress.com предлагает малоизвестный сервис миниатюр веб-сайтов, то есть вы можете указать ему URL-адрес веб-страницы, и он сгенерирует и отобразит миниатюрное изображение этого веб-сайта. Добавьте следующий фрагмент, чтобы создать короткий код «webthumb», и используйте его, заключив в него URL-адрес, например: [WebThumb] // www.makeuseof.com [/ WebThumb]. Используйте атрибуты, чтобы переопределить ширину или высоту, и отрегулируйте вывод HTML, как вам требуется. Миниатюры кэшируются, но для создания может потребоваться некоторое время.


function websitethumbnails($atts, $content = null) {
extract(shortcode_atts(array(
"snap" => 'http://s.wordpress.com/mshots/v1/',
"alt" => 'My image',
"w" => '600', // width
"h" => '350' // height
), $atts));
$img = '

Добавить избранные миниатюры в RSS-каналы

Следующий код отрегулирует отрывок или полный канал RSS, чтобы включить в него эскиз. Вы также можете увидеть, как мы добавили ссылку по умолчанию в конце каждого элемента со ссылкой на полный пост. Конечно, вы можете изменить это на что угодно, например, включить некоторые кнопки обмена.


function excerpt_thumbnail_feeds($content) {
global $post;
if(has_post_thumbnail($post->ID)) {
$content = '
' . get_the_post_thumbnail($post->ID,'featured') . '
' . rss_the_excerpt($post->ID,100);
}
$content .= "

Read the full article: ID)."'>".get_the_title($post->ID)."

"; return $content; } add_filter("the_excerpt_rss", "excerpt_thumbnail_feeds"); // show post thumbnails in feeds function full_thumbnail_feeds($content) { global $post; if(has_post_thumbnail($post->ID)) { $content = ' ' . get_the_post_thumbnail($post->ID,'featured') . ' ' . $content; } $content .= "

Read the full article: ID)."'>".get_the_title($post->ID)."

"; return $content; } add_filter("the_content_rss", "full_thumbnail_feeds”);

Видите ли, есть очень много, что вы можете сделать без плагинов, и это просто царапина на поверхности. Если вы хотите больше, посмотрите мой список рецептов IFTTT для WordPress

или посетите WPSnipp — сайт с более чем 600 классифицированными хакерами.

Ссылка на основную публикацию
Adblock
detector