
Если вы часто пишите какие либо статьи с пояснением, то вы скорее всего, почти всегда прикладываете изображения с примерами в начале или в конце статьи (но это не подойдет для уроков, так как в уроках скриншот прикладывается почти после каждого действия, дабы человек понял, что да как).
И я могу вам с этим немного помочь, так сказать — «упростить жизнь». Недавно я нашел очень хороший код, который добавит в админ-панель блок, не просто блок, а блок с миниатюрами которые вы сможете выбирать и после этого отобразить их в вашей статье.
Это удобно тем, что изображения не будут занимать место в блоке редактирования текста, а будут в отдельном блоке в низу, и следовательно, не будут мешаться. Так же, это удобно тем, что если вам надоело, что миниатюры находятся постоянно в одном и том же месте, или вы меняете дизайн, то вы без труда сможете перенести функцию вывода миниатюр, в любое другое место.
Код я немного отредактировал: он раньше выводил в админ-панели ссылку на оригинальное изображение, а это не хорошо тем, что если изображение много весит, то это тратит трафик сайта и от этого страница дольше грузится.
Код нужно вставить в functions.php вашей темы, или плагин(рекомендую плагин, так как код довольно таки большой, и он будет мешаться в functions.php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
add_action("admin_init", "images_init"); add_action('save_post', 'save_images_link'); function images_init(){ $post_types = get_post_types(); foreach ( $post_types as $post_type ) { add_meta_box("my-images", "Pictures", "images_link", $post_type, "normal", "low"); } } function images_link(){ global $post; $custom = get_post_custom($post->ID); $link = $custom["_link"][0]; $count = 0; echo '<div class="link_header">'; $query_images_args = array( 'post_type' => 'attachment', 'post_mime_type' =>array( 'jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', ), 'post_status' => 'inherit', 'posts_per_page' => -1, ); $query_images = new WP_Query( $query_images_args ); $images = array(); echo '<div class="frame">'; $thelinks = explode(',', $link); foreach ( $query_images->posts as $file) { $imagesrc = wp_get_attachment_image_src($file->ID, 'thumbnail'); if(in_array($images[]= $file->ID, $thelinks)){ echo '<label><input type="checkbox" group="images" value="'.$images[]= $file->ID.'" checked /><img src="'.$imagesrc[0].'" style="max-height:60px; width:auto;"/></label>'; }else{ echo '<label><input type="checkbox" group="images" value="'.$images[]= $file->ID.'" /><img src="'.$imagesrc[0].'" style="max-height:60px; width:auto;"/></label>'; } $count++; } echo '<br /><br /></div></div>'; echo '<input type="hidden" name="link" class="field" value="'.$link.'" />'; echo '<div class="images_count"><span>Files: <b>'.$count.'</b></span> <div class="count-selected"></div></div>'; } function save_images_link(){ global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; } update_post_meta($post->ID, "_link", $_POST["link"]); } add_action( 'admin_head-post.php', 'images_css' ); add_action( 'admin_head-post-new.php', 'images_css' ); function images_css() { echo '<style type="text/css"> #my-images .inside{padding:0px !important;margin:0px !important;} .frame{ width:100%; height:320px; overflow:auto; background:#e5e5e5; padding-bottom:10px; } .field{width:800px;} #results { width:100%; overflow:auto; background:#e5e5e5; padding:0px 0px 10px 0px; margin:0px 0px 0px 0px; } #results img{ border:solid 5px #FDD153; -moz-border-radius:3px; margin:10px 0px 0px 10px; } .frame label{ margin:10px 0px 0px 10px; padding:5px; background:#fff; -moz-border-radius:3px; border:solid 1px #B5B5B5; height:60px; display:block; float:left; overflow:hidden; } .frame label:hover{ background:#74D3F2; } .frame label.checked{background:#FDD153 !important;} .frame label input{ opacity:0.0; position:absolute; top:-20px; } .images_count{ font-size:10px; color:#666; text-transform:uppercase; background:#f3f3f3; border-top:solid 1px #ccc; position:relative; } .selected_title{border-top:solid 1px #ccc;} .images_count span{ color:#666; padding:10px 6px 6px 12px; display:block; } .count-selected{ font-size:9px; font-weight:bold; text-transform:normal; position:absolute; top:10px; right:10px; } </style>'; } add_action( 'admin_head-post.php', 'images_js' ); add_action( 'admin_head-post-new.php', 'images_js' ); function images_js(){?> <script type="text/javascript"> jQuery(document).ready(function($){ $('.frame input').change(function() { var values = new Array(); $("#results").empty(); var result = new Array(); $.each($(".frame input:checked"), function() { result.push($(this).attr("value")); $(this).parent().addClass('checked'); }); $('.field').val(result.join(',')); $('.count-selected').text('Selected: '+result.length); $.each($(".frame input:not(:checked)"), function() { $(this).parent().removeClass('checked'); }); }); var result = new Array(); $.each($(".frame input:checked"), function() { result.push($(this).attr("value")); $(this).parent().addClass('checked'); }); $('.field').val(result.join(',')); $('.count-selected').text('Selected: '+result.length); $.each($(".frame input:not(:checked)"), function() { $(this).parent().removeClass('checked'); }); }); </script> <?} function wps_thumbnails_list(){ global $post; $image = get_post_meta($post->ID, '_link', true); $image = explode(",", $image); foreach($image as $images){ $url = wp_get_attachment_image_src($images, 1, 1); echo '<a href="'; echo $url[0]; echo '" class="lightbox">'; echo wp_get_attachment_image($images,'thumbnail', 1, 1); echo '</a>'; } } |
Функция вывода, выбранных вами миниатюр:
1 |
wps_thumbnails_list(); |
Примечание: Функцию вывода можно вставлять вне цикла loop.