PHP编程
Completion requirements
有几种不同的方式可以使用PHP显示html。通常,您将使用echo命令输出一些内容。这将被web浏览器看到,然后它将格式化它。
<?php get_header(); ?> <div class="content"> <div class="content_botbg"> <div class="content_res"> <!-- full block --> <div class="shadowblock_out"> <div class="shadowblock"> <div class="post"> <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <?php if ( !empty( $post->post_parent ) ) : ?> <p class="page-title"><a href="<?php echo get_permalink( $post->post_parent ); ?>" title="<?php esc_attr( printf( __( 'Return to %s', 'appthemes' ), get_the_title( $post->post_parent ) ) ); ?>" rel="gallery"><?php printf( '<span class="meta-nav">' . __( '← Return to %s', 'appthemes' ) . '</span>', get_the_title( $post->post_parent ) ); ?></a></p> <?php endif; ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h2 class="attach-title"><?php the_title(); ?></h2> <div class="attach-meta"> <?php printf( __( '<span class="%1$s">By</span> %2$s', 'appthemes' ), 'meta-prep meta-prep-author', sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', get_author_posts_url( get_the_author_meta( 'ID' ) ), sprintf( esc_attr__( 'View all ads by %s', 'appthemes' ), get_the_author() ), get_the_author() ) ); ?> <span class="meta-sep">|</span> <?php printf( __( '<span class="%1$s">Uploaded</span> %2$s', 'appthemes' ), 'meta-prep meta-prep-entry-date', sprintf( '<span class="entry-date"><abbr class="published" title="%1$s">%2$s</abbr></span>', esc_attr( get_the_time() ), get_the_date() ) ); if ( wp_attachment_is_image() ) { echo ' <span class="meta-sep">|</span> '; $metadata = wp_get_attachment_metadata(); printf( __( 'Full size is %s pixels', 'appthemes' ), sprintf( '<a href="%1$s" title="%2$s">%3$s × %4$s</a>', wp_get_attachment_url(), esc_attr( __( 'Link to full-size image', 'appthemes' ) ), $metadata['width'], $metadata['height'] ) ); } ?> <?php edit_post_link( __( 'Edit', 'appthemes' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?> </div><!-- /attach-meta --> <div class="entry-content"> <div class="entry-attachment"> <?php if ( wp_attachment_is_image() ) : ?> <?php $attachments = array_values( get_children( array( 'post_parent' => $post->post_parent, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID' ) ) ); foreach ( $attachments as $k => $attachment ) { if ( $attachment->ID == $post->ID ) break; } $k++; // If there is more than 1 image attachment in a gallery if ( count( $attachments ) > 1 ) { if ( isset( $attachments[ $k ] ) ) // get the URL of the next image attachment $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID ); else // or get the URL of the first image attachment $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID ); } else { // or, if there's only 1 image attachment, get the URL of the image $next_attachment_url = wp_get_attachment_url(); } ?> <p class="attachment"><a href="<?php echo $next_attachment_url; ?>" title="<?php echo esc_attr( get_the_title() ); ?>" rel="attachment"> <?php $attachment_width = apply_filters( 'appthemes_attachment_size', 800 ); $attachment_height = apply_filters( 'appthemes_attachment_height', 800 ); echo wp_get_attachment_image( $post->ID, array( $attachment_width, $attachment_height ) ); ?></a></p> <div id="nav-below" class="navigation"> <div class="next-prev"><?php previous_image_link( false, __('← prev', 'appthemes') ); ?> <?php next_image_link( false, __('next →', 'appthemes') ); ?></div> </div><!-- /nav-below --> <?php else : ?> <a href="<?php echo wp_get_attachment_url(); ?>" title="<?php echo esc_attr( get_the_title() ); ?>" rel="attachment"><?php echo basename( get_permalink() ); ?></a> <?php endif; ?> </div><!-- /entry-attachment --> </div><!-- /entry-content --> </div><!-- /post --> <?php endwhile; // end of the loop ?> <div class="clr"></div> </div><!--/post--> </div><!-- /shadowblock --> </div><!-- /shadowblock_out --> <div class="clr"></div> </div><!-- /content_res --> </div><!-- /content_botbg --> </div><!-- /content --> <?php get_footer(); ?>
打破 PHP 输出限制
除了使用 echo
和 print
等函数外,你还可以结束脚本,脚本结束后的所有内容将作为普通 HTML 输出到浏览器。你还可以在关闭 PHP 标签后随时重新启动脚本。是不是有点困惑?其实很简单。
假设你有一个 for
循环来输出从 1 到 5 的数字:
<?php
echo("<ul>");
for($x = 1; $x < 6; $x++)
{
echo("<li>" . $x . "</li>");
}
echo("</ul>");
?>
虽然对于输出大量内容的较大页面,我通常会使用模板,但我们稍后会讲到。记得你所有的 PHP 脚本都是以 <?php
开头并以 ?>
结尾吗?这些标签并不一定要是文件的开头和结尾。实际上,PHP 处理结束和重新启动脚本的方式就像所有内容都位于 ?>
和 <?php
标签之间,并且这些内容都在 echo
语句内部一样。
因此,你可以做如下操作:
<ul>
<?php
for($x = 1; $x < 6; $x++)
{
?>
<li><?= $x ?></li>
<?php
}
?>
</ul>
这实际上是输出脚本中变量的一个非常常见的方法,特别是在变量周围有大量 HTML 的情况下。如前所述,我个人很少这样做,因为我认为对于较小的脚本,使用 echo
可以让代码更简洁(对于较大的脚本,我会使用模板)。然而,为了覆盖大部分语言功能,这也是你可以使用的另一种方法。
Last modified: Friday, 10 January 2025, 3:20 AM