在wordpress页面中分割内容

时间:2015-07-31 05:50:23

标签: wordpress-plugin wordpress

构建一个需要按流组织内容的wordpress网站 - 例如机械,电气等。此外,每个页面都需要新闻,文章活动等部分。如果你选择一个页面(比如机械),它必须有以下部分

  • 新闻
  • 文章(类别:文章)
  • 活动(类别:活动)

其他流也将具有相同的部分

是否有用于实现的插件,或者我最好为每个垂直构建模板页面并编写php代码?带有单个部分的页面的显示代码。

  <?php           
  $args = array(
'posts_per_page'   => 1,
'category_name'    => 'news',
'orderby'          => 'date',
'order'            => 'DESC',
'post_type'        => 'post',
'post_status'      => 'publish',
'suppress_filters' => true 
);

$posts_array = get_posts( $args ); 


    $the_query = new WP_Query($args);
  //EXAMPLE NEWS SECTION 
  if ( $the_query->have_posts() ) {
      while ( $the_query->have_posts() ) {
          $the_query->the_post();
      the_content();          
      echo $content;
      }

  } else {
      // no posts found

  }
  ?>

2 个答案:

答案 0 :(得分:1)

在我看来,你可以写一个插件来进行过滤。 所谓的插件在shortcode上会有一些参数(例如类别),并会返回或回显与该类别相关的所有帖子。

短代码注册:

add_action('init','register_shortcode');
function register_shortcode(){
  add_shortcode('shortcode_name', 'shortcode_function');
}

短代码功能:

function shortcode_function($attr){
  $attr = shortcode_atts(array('category' => 'default'),$attr); //Setting defaults parameters
  $args = array(
    'category_name'    => $attr['category'],
    'orderby'          => 'date',
    'order'            => 'DESC',
    'post_type'        => 'post',
    'post_status'      => 'publish',
    'suppress_filters' => true 
    );

  $the_query = new WP_Query($args);
  if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
      $the_query->the_post();
      //echo other html related stuff
      the_title();
      the_content();          
    }
  }
}

用法

[shortcode_name category='news']
[shortcode_name] //category defaults at 'default'

在你的情况下,页面可能是那样的

<div>
  News : <br/>
  [shortcode_name category='news']
</div>
<div>
  Articles : <br/>
  [shortcode_name category='articles']
</div>
<div>
  Events : <br/>
  [shortcode_name category='events']
</div>

答案 1 :(得分:1)

我认为没有一个正确的方法来做到这一点......这取决于场景......有多少帖子,部分或“主要流”的添加频率/改变,你需要页面上的其他东西等。

一个非常简单且易于维护的解决方案是:

1.mechanicalelectrical等添加为newsarticlesevents

旁边的类别

2.修改(或添加)category.php以重复循环三次,并仅显示属于每个部分的帖子(其他类别):

//Loop your sections
foreach(array('news', 'articles', 'events') as $category) {
    echo '<h2>' . $category . '</h2>';
    //Loop posts
    while ( have_posts() ) {
        the_post();
        //Check if post is in section (by slug!)
        if ( in_category($category) ) {
            the_title();
            the_content();
        }
    }
    //Start the loop over
    rewind_posts();
}

现在只需将每个帖子分配给一个(或多个)“父母”,fx mechanical,以及newsarticles或{{1}中的一个(且仅一个) }} ...

  • 如果您转到events的存档页面,则会有三个部分
  • 如果你去mechanical你得到所有新闻(但也有两个空白部分,所以你当然应该检查一下)。

请注意,如果您愿意,可以使用代码甚至是自定义分类法来完成此操作,您只需要编辑其他主题文件 - 请参阅template hierarchy

请注意,这对分页效果不会很好,所以如果这是一个问题,需要处理。