将不同类别的帖子拉到不同的页面上(Wordpress)

时间:2014-03-11 14:57:54

标签: php wordpress

我有这段代码:

<?php
$catPost = get_posts(get_cat_ID("music")); //change this
foreach ($catPost as $post) : setup_postdata($post); ?>
 <div>
    <li id="product_thumbnails">
      <h2><?php the_title(); ?></h2>
        <p><?php
  $thumbnail_id=get_the_post_thumbnail($post->ID);
  preg_match ('/src="(.*)" class/',$thumbnail_id,$link);
  ?>

从&#34; MUSIC&#34;中提取所有帖子类别到特定页面。 我有大约15页,我想让他们每个人拉出不同的类别,如&#34;电影,体育等&#34;。 我是否必须创建15个模板,并在每个模板中更改此行:

$catPost = get_posts(get_cat_ID("music")); //change this

例如:

$catPost = get_posts(get_cat_ID("movies")); //change this

或者有一种更清洁的方法,它是否可能? 我正在使用主题二十二。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将要查看的类别加载到数组中。 您可以从PHP Get或switch等中检索这些内容吗?

$poststoretrieve = array ('category' => '1,2,3,4,5,6'));
$postsloop = get_posts($poststoretrieve;

foreach ($postsloop as $onepost){
    //loop stuff here
}

更多信息,请参阅http://codex.wordpress.org/Template_Tags/get_posts

答案 1 :(得分:0)

你能做的就是创建你的十五个页面,使用下面的代码制作一个模板,然后只需添加一个custom field,可能是this_page_cat(你可以任意命名)到所有十五页。所以对于你的十五页,你会有:

page 1: this_page_cat = music
page 2: this_page_cat = books
page 3: this_page_cat = movies
...

然后只需将模板中的代码更改为

即可
<?php
$custom_fields = get_post_custom(); //gets custom fields for this page
$my_custom_field = $custom_fields['this_page_cat']; //get fields named 'this_page_cat'
$catPost = get_posts('category=' . get_cat_ID($my_custom_field[0])); //get_post_custom() returns multidimensional array so you need to access the index you want
foreach ($catPost as $post) : setup_postdata($post); ?>
<div>
<li id="product_thumbnails">
  <h2><?php the_title(); ?></h2>
    <p><?php
 $thumbnail_id=get_the_post_thumbnail($post->ID);
 preg_match ('/src="(.*)" class/',$thumbnail_id,$link);
endforeach;
?>

将该模板应用于所有十五页,你应该是好的。自定义字段是WP的最佳部分之一,它们上面是more info。另一个答案可能会奏效,但这是一个更具可扩展性的解决方案。