2015-10-08 3 views
1

Я пытаюсь создать страницу для WordPress «category.php» из кода в этом учебнике: http://scratch99.com/wordpress/wp-seo/siloing/Анализировать ошибка: синтаксическая ошибка, неожиданный «endforeach» (T_ENDFOREACH)

Моя текущая тема (Sociallyviral по ThemeForest) нет страницы «category.php», поэтому я ее создал и добавил код ниже:

Примечание автора: «Код должен выглядеть примерно так. Примечание. Вы не можете просто использовать этот код точно - он должен соответствовать вашей теме, чтобы классы обертывания div и т. Д. Соответствовали остальной части вашей темы, и стиль подбирается ».

// 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; 

При необходимости, ниже моей файл темы "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(); ?> 

Я получаю эту ошибку, когда я пытаюсь открыть страницу категории:

«Синтаксическая ошибка: синтаксическая ошибка, неожиданный «endforeach» (T_ENDFOREACH) в /wp-content/themes/sociallyviral/category.php в строке 20 »

Эта синтаксическая ошибка решена!

Спасибо всем!

С уважением!

+0

У вас есть

+0

Нет, я не благодарю вас, очень много:/ – kodden

+0

Рад, что я могу помочь. Я добавил более подробный ответ с некоторым объяснением для других пользователей, которые вы можете принять, если хотите, поэтому другие знают, что этот вопрос решен. –

ответ

0

Вам не хватает <?php Тег в начале файла.

Без него первый бит кода, анализатор будет разбирать следующий код как PHP:

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

, как вы можете видеть, первая вещь, чтобы достигнуть (около трех echo-х) является endforeach; и вот где ваш парсер выдает ошибку.


Авторы отмечают, сказал следующее:»... она должна вписываться в вашей теме так что классы из оборачивания дивы и т.д. соответствовать остальной части вашей темы и в стиль подобрали. "

Это означает, что вам необходимо предоставить <div> в вашем коде class и style дополнительных атрибутов в соответствии с вашими и вашими шаблонами. В деталях вы должны применять классы, используемые вашим шаблоном, для применения нужного макета. Вы должны иметь некоторую форму ссылок на классы, используемые вашим шаблоном (возможно, something like this). Где вы можете посмотреть, какие классы использовать.

This - это то, на что ссылается бутстрап - просто чтобы дать вам некоторое представление о том, что вы после.

0

Поместите PHP тег в начале кода

<?php // 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> 
<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; 

ваша проблема будет решена.

+0

Спасибо, очень! – kodden

+0

@koddenif Ваша проблема решена, а затем отметьте как лучший ответ. –

Смежные вопросы