我目前正在尝试开发自定义Wordpress主题,在我的主页上我需要添加第二个内容块。我正在使用插件执行此操作,这只需要我在内容块的位置添加以下内容。
<?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(); ?>
修改
好吧,显然它需要被置于循环之外,但它仍然无效。有什么想法吗?
<?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(); ?>
答案 0 :(得分:1)
这主要取决于插件实际执行的操作,因为您的代码语法是正确的。
如果您正在使用Multiple Content Blocks插件并使用最新的Wordpress版本3.5.1,那么我认为该插件可能不兼容。我会检查插件的版本兼容性到你的Wordpress安装,因为这可能是你的问题。
修改强>
该插件通过对函数the_content()应用过滤器来工作,这就是为什么它只能在调用the_content()函数之前声明the_block()。
解决方案可能是捕获输出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; ?>