doujian3132 2015-10-08 04:53
浏览 290
已采纳

解析错误:语法错误,意外'endforeach'(T_ENDFOREACH)[重复]

This question already has an answer here:

I'm trying to create a page for WordPress "category.php" from the code in this tutorial: http://scratch99.com/wordpress/wp-seo/siloing/

My current theme (Sociallyviral by Themeforest) there is no page "category.php," so I created one and added the code below:

Author's Note: "The code should look something like the below. Note, you can’t just use this code exactly – it needs to fit in with your theme so that the classes of wrapping divs, etc match the rest of your theme and the style is picked up."

// work out category id, then see if there are any subcategories
$main_cat_ID = get_query_var( 'cat' );
$subcats = get_categories( array( 'parent' => $main_cat_ID, 'hide_empty' => 0 ) );

// if it is page 1
if ( $paged < 2 ) :

    // show the category description
    echo category_description();

    // if there are subcategories, loop through and show them
    if ( count( $categories ) > 0 ) :
        foreach ( $subcats as $category ) : ?>    
            <div class="subcategory">
                <h2><a class="subcategory-link" href="<?php echo get_category_link( $category->term_id ); ?>">
                <?php echo $category->name; ?></a></h2>
                <?php echo wpautop( $category->description ); ?>
            </div>
        <?php
       endforeach;
    endif;

    // get sticky posts and show them if they exist
    $args = array( 'category__in' => $main_cat_ID, 'include' => get_option( 'sticky_posts' ) );
    $myposts = get_posts( $args );
    if ( count( $myposts ) > 0 ) :
        foreach ( $myposts as $value ) : ?>
        <div class="sticky">
            <h3>
                <a href="<?php echo get_permalink( $value->ID ); ?>" rel="bookmark"
                title="<?php echo $value->post_title; ?>"><?php echo $value->post_title; ?></a>
            </h3>
            <div class="entry-content">
            <?php 
            // if there is an excerpt, use it, otherwise roll our own (get_the_excerpt won't work outside the loop)
            if ( $value->post_excerpt ) : 
                echo wpautop( $value->post_excerpt );
            else :
                $sjc_excerpt = explode( '<!--more-->', $value->post_content ); 
                if ( count( $sjc_excerpt ) >= 2 ) :
                    echo wpautop( strip_tags( $sjc_excerpt[0] ) );
                else :
                    echo wpautop( implode ( ' ', array_slice( explode( ' ', strip_tags( $sjc_excerpt[0] ) ), 0, 45 ) ) . ' ...' );
                endif;
            endif; ?>
            </div>
        </div>
        <?php
        endforeach;
    endif;

// pages 2 and onwards don't worry about cat desc or stickies, but link to main cat page
else : ?>
        <p>For an introduction to this topic and our latest articles, please see the main 
        <a href="<?php echo get_category_link( $main_cat_ID ); ?>"><?php single_cat_title(); ?></a> page.</p>
<?php
endif;

// if we have any posts in the main loop (no stickies there)
if ( have_posts() ) : ?>

    <ul class="other-posts">

    <?php /* Start the Loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>

        <li><a href="<?php the_permalink() ?>" rel="bookmark"
        title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></li>

    <?php endwhile; ?>
    </ul>

    <?php 
    // you need to replace this with whatever your theme uses!
    sjc_content_nav( 'nav-below' ); 

// if no posts, and also no stickies and no categories, go with no results
elseif ( count( $myposts ) == 0 && count( $subcats ) == 0 ) : 

    get_template_part( 'no-results', 'archive' ); 

endif; 

If necessary, below my theme file "archive.php"

<?php $mts_options = get_option(MTS_THEME_NAME); ?>
<?php get_header(); ?>
<div id="page">
    <div id="content_box">
        <h1 class="postsby">
            <?php if (is_category()) { ?>
                <span><?php single_cat_title(); ?><?php _e(" Archive", "mythemeshop"); ?></span>
            <?php } elseif (is_tag()) { ?> 
                <span><?php single_tag_title(); ?><?php _e(" Archive", "mythemeshop"); ?></span>
            <?php } elseif (is_author()) { ?>
                <span><?php  $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author)); echo $curauth->nickname; _e(" Archive", "mythemeshop"); ?></span> 
            <?php } elseif (is_day()) { ?>
                <span><?php _e("Daily Archive:", "mythemeshop"); ?></span> <?php the_time('l, F j, Y'); ?>
            <?php } elseif (is_month()) { ?>
                <span><?php _e("Monthly Archive:", "mythemeshop"); ?>:</span> <?php the_time('F Y'); ?>
            <?php } elseif (is_year()) { ?>
                <span><?php _e("Yearly Archive:", "mythemeshop"); ?>:</span> <?php the_time('Y'); ?>
            <?php } ?>
        </h1>
        <?php $j = 1; if (have_posts()) : while (have_posts()) : the_post(); $featured = get_post_meta($post->ID, 'mts_featured', true); ?>
            <article class="latestPost excerpt<?php echo (($j+2) % 3 == 0) ? ' first' : ''; ?><?php echo ($j % 3 == 0) ? ' last' : ''; ?>" itemscope itemtype="http://schema.org/BlogPosting">
                <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="nofollow" id="featured-thumbnail">
                    <?php echo '<div class="featured-thumbnail">'; the_post_thumbnail('featured',array('title' => '')); echo '</div>'; ?>
                    <?php if (function_exists('wp_review_show_total')) wp_review_show_total(true, 'latestPost-review-wrapper'); ?>
                    <?php if ($featured) : ?><div class="post-label"><i class="fa fa-star"></i> <span><?php _e('Featured','mythemeshop'); ?></span></div><?php endif; ?>
                </a>
                <header>
                    <h2 class="title front-view-title"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
                    <?php if ( ! empty( $mts_options["mts_home_headline_meta"] ) ) { ?>
                        <div class="post-info">
                            <?php if( ! empty( $mts_options["mts_home_headline_meta_info"]['date']) ) { ?>
                                <span class="thetime updated"><i class="fa fa-calendar"></i> <span itemprop="datePublished"><?php echo human_time_diff( get_the_time('U'), current_time('timestamp') ) . __(' ago','mythemeshop'); ?></span></span>
                            <?php } ?>
                            <?php if( ! empty( $mts_options["mts_home_headline_meta_info"]['category']) ) { ?>
                                <span class="thecategory"><i class="fa fa-tags"></i> <?php mts_the_category(', ') ?></span>
                            <?php } ?>
                        </div>
                    <?php } ?>
                </header>
            </article><!--.post excerpt-->
        <?php $j++; endwhile; endif; ?>

        <!--Start Pagination-->
        <?php if (isset($mts_options['mts_pagenavigation_type']) && $mts_options['mts_pagenavigation_type'] == '1' ) { ?>
            <?php mts_pagination(); ?> 
        <?php } else { ?>
            <div class="pagination pagination-previous-next">
                <ul>
                    <li class="nav-previous"><?php next_posts_link( '<i class="fa fa-angle-left"></i> '. __( 'Previous', 'mythemeshop' ) ); ?></li>
                    <li class="nav-next"><?php previous_posts_link( __( 'Next', 'mythemeshop' ).' <i class="fa fa-angle-right"></i>' ); ?></li>
                </ul>
            </div>
        <?php } ?>
        <!--End Pagination-->
    </div>
<?php get_footer(); ?>

I get this error when i try to open the category page:

"Parse error: syntax error, unexpected 'endforeach' (T_ENDFOREACH) in /wp-content/themes/sociallyviral/category.php on line 20"

This syntax error, are solved!

Thank you all!

Best regards!

</div>
  • 写回答

2条回答 默认 最新

  • duandazhen7306 2015-10-08 05:11
    关注

    You are missing the <?php Tag at the beginning of your file.

    Without it, the first bit of code, the parser will parse the following code as php:

            echo get_category_link( $category->term_id );
            echo $category->name;
            echo wpautop( $category->description );
       endforeach;
    endif;
    

    as you can see, the first thing to reach (beside the three echo's) is endforeach;and this is where your parser throws an error.


    The authors note said the following: "...it needs to fit in with your theme so that the classes of wrapping divs, etc match the rest of your theme and the style is picked up."

    This means, that you need to provide the <div>'s in your code with class and style addributes, according to your and your templates needs. In detail, you are meant to apply the classes used by your template, to apply the desired layout. You should have some form of reference of the classes your template uses (probably something like this). Where you can have a look at which classes to use.

    This is what the reference of bootstrap looks like - just to give you some idea of what you are after.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题