如何更改[图库]标记?

时间:2010-09-30 作者:PaulAdamDavis

我想将[图库]创建的标记从标准(dl)更改为无序列表,但有所不同。下面是所需的标记:

<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> 
我想要链接的主要图像源(&A);img,因为我想通过php裁剪器脚本运行img src。

这可能吗?我相信我们能破解它!

4 个回复
最合适的回答,由SO网友:PaulAdamDavis 整理而成

感谢您的回复,1月&;稀有的。他们为我指明了正确的方向。这就是我的结局。

这将禁用内容中的短代码。非常适合此网站;函数获取附加图像;把它们列成一个列表。(我在某处找到了该函数,并将其精简了一点)

// 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++;
        }
    }
}
这是单打电话。php

<ul>
    <?php nerdy_get_images(\'medium\',\'0\',\'0\'); ?>
</ul>
这张单子正是我想要的。

再次感谢各位!

SO网友:Rarst

中项目的输出gallery_shortcode() 函数未过滤,因此没有机会在那里更改它。只能使用post_gallery 在其开头运行的筛选器。与通常的过滤最终结果相比,这有点不合常规,可能是出于性能原因(生成库的计算量可能相当大)。

但它使用wp_get_attachment_link() 生成链接并过滤其输出wp_get_attachment_link 钩子有很多细节:

apply_filters( \'wp_get_attachment_link\', "<a href=\'$url\' title=\'$post_title\'>$link_text</a>", $id, $size, $permalink, $icon, $text );
您是否需要执行一些非常复杂的裁剪,以使用单独的脚本来处理它?为什么不让WP处理add_image_size() ?

SO网友:Jan Fabry

如果你想要改变dl 列表到ul 所有库上的列表,不仅是那些通过额外属性请求此列表的库,您还可以连接到post_gallery 在开始时运行的筛选器the gallery_shortcode function. 在那里,可以覆盖和设置属性的默认值。

最终的输出没有被过滤,但我想应该可以删除gallery, 并添加您自己的函数gallery_shortcode() 但在最后添加了最终处理。或者尝试wp_get_attachment_link, as Rarst suggests.

SO网友:Mariano Miguel

我现在就是这样做的。我有两个代码,一个用于显示gallery短代码,另一个用于显示其余内容:

第一个代码是:

$gallery = \'\';
$match = \'/(\\[)(gallery).*?(ids).*?(\\])/\';
$matches = \'\';
preg_match($match, get_the_content(), $matches, PREG_OFFSET_CAPTURE);
if ($matches) :
    $matches = $matches[0];
    $gallery = $matches[0];
    echo \'\';
    do_shortcode($gallery);
    echo \'\';
endif;
第二个:

$match = \'/(\\[)(gallery).*?(ids).*?(\\])/\';
$content = preg_replace($match, \'\', get_the_content());
if (!empty($content)) :
    $content = \'\' . $content . wp_link_pages(        array( \'before\' => \'\' . __( \'Pages:\', \'veento\' ),   \'after\' => \'\' ) ) . \'\';
    print $content;
endif;

结束

相关推荐

如何在WordPress中关闭标记的自动关闭标签(例如,HTML5或HTML4)?

我想在我的WordPress主题中使用HTML5,如何关闭wptexturize 我不介意增加休息时间,但我想让他们休息一下<br> 而不是<br />. 我如何控制这些中断在代码中的显示方式 EDIT: 我只在乎<br> 标签问题,我不介意它对排版的改变 EDIT2: 事实上,我想<img> 标签也很重要。任何自动关闭的独立标签在这里都很重要。所以<hr> 也可能是个问题。更不用说这些了wp_head() 项目作为<link> 各种