1

我正在制作一个响应式 WordPress 作品集网站 (www.jasongilmour.co.uk),但我对 WP 主题开发知之甚少,所以我真的被一些 PHP 困住了。我希望通过为不同的设备加载不同的图像来使我的网站真正响应,但无法获得正确的代码......

我现在拥有的是从 maximage2 幻灯片的帖子中获取完整尺寸的图像。

<div id="maximage">
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

            $args = array(
                'post_type' => 'attachment',
                'numberposts' => -1,
                'post_status' => null,
                'post_parent' => $post->ID
            );

            $attachments = get_posts( $args );
                if ( $attachments ) {
                foreach ( $attachments as $attachment ) {
                echo wp_get_attachment_image( $attachment->ID, 'full' );
                }
            }

        endwhile; endif; ?>
    </div>

我试图将它嵌入到<picture>标签中并只回显 src 但是当我使用wp_get_attachment_image_src它时返回 HTML“ ArrayArrayArrayArray”。我也试过把echo wp_get_attachment_image( $attachment->ID, 'full', 'src',但这并没有改变返回的 HTML。

我不太了解 WP 文档,无法使其在...循环或数组中工作我认为这被称为?所以这对我来说不是很好。

这是我网站的一个非常重要的部分,因为我使用大量图像来保持我的设计理念,并且它使网站在缓存之前非常慢。

附言

虽然在过去的几周里我学到了很多东西,但我仍然不明白我在用 PHP 做什么......我只是一个平面设计专业的学生。

我也可能使主题开源,所以如果有人有兴趣获得副本,请告诉我。

在我满意之前,我还需要对平板设备上的鼠标悬停菜单问题进行排序,但我也不明白我在那里做什么。

提前致谢!

4

2 回答 2

1

但是当我使用 wp_get_attachment_image_src 它返回 HTML

这是因为该函数根据返回一个数组,其中包含图像 URL、宽度和高度。

所以:

list($url, $width, $height) = wp_get_attachment_image_src($attachment->ID, 'full');
printf('<img src="%s" width="%d" heigt="%d"', $url, $width, $height);

// or vprintf and directly pass the function call...
于 2013-01-24T22:52:03.640 回答
0

好吧,它不像我希望的那样干净,但它确实有效,该网站现在快了一百万倍。Javascript 只是在某些屏幕尺寸下注释掉不需要的 HTML,这样我就可以获得我需要的所有图像尺寸,这意味着 PHP 没有改变。

<script>
document.write("<!--");
if (screen.width <= '400') {document.write(" good -->");}
</script>
<div id="maximage">
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

        $args = array(
            'post_type' => 'attachment',
            'numberposts' => -1,
            'post_status' => null,
            'post_parent' => $post->ID
        );

        $attachments = get_posts( $args );
            if ( $attachments ) {
            foreach ( $attachments as $attachment ) {
            echo wp_get_attachment_image( $attachment->ID, 'full' );
            }
        }

    endwhile; endif; ?>
</div>
<script>
 if (screen.width <= '400') {document.write("<!-- good ");}
</script>
-->

<script>
document.write("<!--");
if ((screen.width >= '401') && (screen.width <= '800')) {document.write(" good -->");}
</script>
<div id="maximage">
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

        $args = array(
            'post_type' => 'attachment',
            'numberposts' => -1,
            'post_status' => null,
            'post_parent' => $post->ID
        );

        $attachments = get_posts( $args );
            if ( $attachments ) {
            foreach ( $attachments as $attachment ) {
            echo wp_get_attachment_image( $attachment->ID, 'full' );
            }
        }

    endwhile; endif; ?>
</div>
<script>
 if ((screen.width >= '401') && (screen.width <= '800')) {document.write("<!-- good ");}
</script>
-->

<script>
document.write("<!--");
if ((screen.width >= '801') && (screen.width <= '1280')) {document.write(" good -->");}
</script>
<div id="maximage">
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

        $args = array(
            'post_type' => 'attachment',
            'numberposts' => -1,
            'post_status' => null,
            'post_parent' => $post->ID
        );

        $attachments = get_posts( $args );
            if ( $attachments ) {
            foreach ( $attachments as $attachment ) {
            echo wp_get_attachment_image( $attachment->ID, 'large' );
            }
        }

        endwhile; endif; ?>
</div>
<script>
 if ((screen.width >= '801') && (screen.width <= '1280')) {document.write("<!-- good ");}
</script>
-->

<script>
document.write("<!--");
if (screen.width >= '1281'){document.write(" good -->");}
</script>
<div id="maximage">
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post();    

        $args = array(
            'post_type' => 'attachment',
            'numberposts' => -1,
            'post_status' => null,
            'post_parent' => $post->ID
        );

        $attachments = get_posts( $args );
            if ( $attachments ) {
            foreach ( $attachments as $attachment ) {
            echo wp_get_attachment_image( $attachment->ID, 'full' );
            }
        }

        endwhile; endif; ?>
</div>
<script>
 if (screen.width >= '1281') {document.write("<!-- good ");}
</script>
-->
于 2013-02-01T15:25:28.000 回答