2013-03-10 2 views
0

В настоящее время я пытаюсь разработать пользовательскую тему Wordpress, и на моей домашней странице мне нужно добавить второй блок контента. Я использую плагин, чтобы сделать это, что просто требует от меня добавить следующее, где я хочу, чтобы блок контента был.Продолжение WordPress PHP Loop

<?php the_block('Latest Products')?> 

Однако, когда я добавляю это, кажется, не имеет никакого эффекта, который я считаю, это из-за форматирование моего PHP. Я довольно новичок в php, поэтому любая помощь очень ценится.

Мой код выглядит следующим образом: я вырезал лучшую часть HTML. Я думаю, что это как-то связано с тегом endforeach?

<?php get_header(); ?> 

<?php if(have_posts()) :?> 
<?php while (have_posts()) : the_post(); ?> 

<?php the_content(); ?> 

<?php 
global $post; 
$myposts = get_posts('numberposts=4&category=1'); 
foreach($myposts as $post) : 
?>      
<div class="blogsnippet"> 
<div class="postdate"> 
    <span class="top"><?php the_time ('j')?></span><br/><span class="bottom"><?php the_time('M');?></span> 
</div> 
<div class="postexcerpt"> 
<h3><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h3> 
<p><?php echo(get_the_excerpt());?></p> 
</div> 
</div> 

<?php endforeach;?>    

<?php the_block('Latest Products')?> 

<?php endwhile; endif; ?> 

<?php get_footer(); ?> 

EDIT

Хорошо, так что, видимо, это нужно ставить вне цикла, однако она по-прежнему не будет работать. Есть идеи?

<?php get_header(); ?> 

<?php if(have_posts()) :?> 
<?php while (have_posts()) : the_post(); ?> 

<?php the_content(); ?> 

<?php 
global $post; 
$myposts = get_posts('numberposts=4&category=1'); 
foreach($myposts as $post) : 
?>      
<div class="blogsnippet"> 
<div class="postdate"> 
<span class="top"><?php the_time ('j')?></span><br/><span class="bottom"><?php  the_time('M');?></span> 
</div> 
<div class="postexcerpt"> 
<h3><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h3> 
<p><?php echo(get_the_excerpt());?></p> 
</div> 
</div> 

<?php endforeach;?>    
<?php endwhile; endif; ?> 

<?php the_block('Latest Products')?> 

<?php get_footer(); ?> 

ответ

1

Это в основном зависит от того, что плагин на самом деле делает, потому что ваш синтаксис кода верен.

Если вы используете плагин Multiple Content Blocks и используете последнюю версию Wordpress 3.5.1, то я считаю, что плагин может быть несовместим. Я бы проверял совместимость версии плагина с вашей установкой Wordpress, так как это может быть вашей проблемой.

EDIT:

Плагин работает путем применения фильтра к функции the_content(), так что именно поэтому он работает только объявляя the_block() перед функцией the_content() называется.

Решение может захватить выходной the_block() и использовать его распечатать позже, в качестве примера:

<?php 
    ob_start(); 
    the_block('Latest Products'); 
    $latest_products_contents = ob_get_contents(); 
    ob_end_clean(); 
?> 
<!-- Further down.. --> 
<?php echo $latest_products_contents; ?> 
+0

Спасибо Ryan - там не хватает данных, чтобы определить его совместимость еще - один человек говорит, что он работает но это все. По какой-то причине я просто не вижу второй редактируемый регион в редакторе страниц, пока он находится вне цикла. Если положить его внутри цикла, особенно над секцией, вызывающей последние 4 сообщения, она появляется и работает нормально даже внутри цикла, но, очевидно, мне это нужно ниже. Это заставляет меня думать, что с этим кодом что-то не так, но я недостаточно опытен, чтобы говорить. –

+0

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