Làm cách nào tôi có thể thay đổi đánh dấu [thư viện]?


8

Tôi muốn thay đổi đánh dấu được tạo bởi [bộ sưu tập] từ tiêu chuẩn (dl) thành danh sách không có thứ tự với sự khác biệt. Dưới đây là đánh dấu mong muốn:

<ul>
    <li><a href="/path/to/image.jpg"><img src="/path/to/image.jpg" /></a></li>
    <li><a href="/path/to/image2.jpg"><img src="/path/to/image2.jpg" /></a></li>
    <!-- And so on, all in one ul -->
</ul> 

Tôi muốn nguồn hình ảnh chính cho liên kết & img, vì tôi muốn chạy img src thông qua một tập lệnh cắt xén php.

Điều này có thể không? Tôi chắc chắn chúng ta có thể crack nó!

Câu trả lời:


3

Cảm ơn câu trả lời của bạn, Jan & Rarst. Họ chỉ cho tôi đi đúng hướng. Đây là những gì tôi đã kết thúc với.

Điều này vô hiệu hóa shortcodes trong nội dung. Hoàn hảo cho trang web này và chức năng được đính kèm hình ảnh & nhổ chúng ra như một danh sách. (Tôi tìm thấy chức năng ở đâu đó & làm giảm nó xuống một chút)

// Removed shortcodes from the content
add_filter('the_content', 'strip_shortcodes');

// Get attached images & spits out a list of them.
function nerdy_get_images($size = 'thumbnail', $limit = '0', $offset = '0') {
    global $post;
    $images = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
    if ($images) {
        $num_of_images = count($images);
        if ($offset > 0) : $start = $offset--; else : $start = 0; endif;
        if ($limit > 0) : $stop = $limit+$start; else : $stop = $num_of_images; endif;
        $i = 0;
        foreach ($images as $image) {
            if ($start <= $i and $i < $stop) {
            $img_title = $image->post_title;   // title.
            $img_description = $image->post_content; // description.
            $img_caption = $image->post_excerpt; // caption.
            $img_url = wp_get_attachment_url($image->ID); // url of the full size image.
            $preview_array = image_downsize( $image->ID, $size );
            $img_preview = $preview_array[0]; // thumbnail or medium image to use for preview.
            ?>
            <li>
                <a href="<?php echo $img_url; ?>"><img src="<?php echo $img_preview; ?>" alt="<?php echo $img_caption; ?>" title="<?php echo $img_title; ?>"></a>
            </li>
            <?
            }
            $i++;
        }
    }
}

Đây là cuộc gọi trong single.php

<ul>
    <?php nerdy_get_images('medium','0','0'); ?>
</ul>

Điều này tạo ra một danh sách chính xác như tôi muốn.

Một lần nữa, cảm ơn các bạn!


3

Đầu ra của các mục trong gallery_shortcode()chức năng không được lọc, vì vậy không có cơ hội để thay đổi nó ở đó. Đánh dấu chỉ có thể được thay thế đầy đủ, sử dụng post_gallerybộ lọc chạy khi bắt đầu. Đó là một chút khác thường so với kết quả lọc thông thường và có lẽ là vì lý do hiệu suất (tạo bộ sưu tập có thể nặng về mặt tính toán).

Nhưng nó sử dụng wp_get_attachment_link()để tạo liên kết và đầu ra của nó được lọc thông qua wp_get_attachment_linkhook với nhiều chi tiết:

apply_filters( 'wp_get_attachment_link', "<a href='$url' title='$post_title'>$link_text</a>", $id, $size, $permalink, $icon, $text );

Bạn có cần thực hiện một số crop thực sự phức tạp mà bạn muốn tập lệnh riêng biệt để xử lý nó không? Tại sao không để WP xử lý nó add_image_size()?


1

Nếu bạn muốn thay đổi dldanh sách này để ulliệt kê trên tất cả các phòng trưng bày, không chỉ trên những yêu cầu này thông qua các thuộc tính thêm, bạn có thể móc vào các post_gallerybộ lọc đó được chạy vào đầu các gallery_shortcodechức năng . Ở đó bạn có thể ghi đè và đặt giá trị mặc định cho các thuộc tính.

Đầu ra cuối cùng không được lọc, nhưng tôi đoán có thể loại bỏ trình xử lý shortcode mặc định galleryvà thêm chức năng của riêng bạn để kết thúc gallery_shortcode()nhưng thêm xử lý cuối cùng vào cuối. Hoặc thử nối vào wp_get_attachment_link, như Rarst gợi ý .


-2

Đây là cách tôi đang làm ngay bây giờ. Tôi đã có 2 mã, một mã để hiển thị mã ngắn của thư viện và một mã khác để hiển thị phần còn lại của nội dung:

Mã đầu tiên là:

$ thư viện = '';
$ match = '/(\[)(gallery).*?(ids).*?(\[)/';
$ khớp = '';
preg_match ($ khớp, get_the_content (), $ khớp, PREG_OFFSET_CAPTURE);
if ($ khớp):
    $ khớp = $ khớp [0];
    $ gallery = $ khớp [0];
    tiếng vang '';
    do_shortcode (thư viện $);
    tiếng vang '';
endif;

Và cái thứ hai:

$ match = '/(\[)(gallery).*?(ids).*?(\[)/';
$ content = preg numplace ($ match, '', get_the_content ());
if (! trống ($ nội dung)):
    $ nội dung = ''. $ nội dung. wp_link_pages (mảng ('trước' => ''. __ ('Trang:', 'veento'), 'sau' => '')). '';
    in nội dung $;
endif;

1
do_shortcode($gallery);không in gì cả. Và ý nghĩa của là echo '';gì?
fuxia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.