作为CMS的WordPress架构-帖子和页面

时间:2012-03-14 作者:csi

如何将帖子与页面关联?

试图确定实现以下目标的最佳架构/策略。。。

将WordPress用作CMS,每页8页,每页都有子页,每页也可以有帖子

我可以设置8个类别,每个类别匹配一个页面,然后在页面下列出该类别中的帖子,但这似乎很笨拙。有更好的方法吗?

示例:
奖项页面有子页面年度奖项,子页面月度奖项有子页面2012年3月后的奖项,应显示在奖项页面上;月度奖励页面

提前谢谢。

2 个回复
SO网友:chrisguitarguy

@scribu有一个很棒的插件叫做Posts 2 Posts. 它允许您手动将不同的职位类型(或相同的职位类型)相互关联。我经常将其用于更大的CMS类型项目,甚至pluginized a common pattern 我发现自己在几个网站上写作。

下面是一个示例,可以根据您的需要使用Posts 2 Posts

<?php
WPSE45561_Pages_Posts::init();

class WPSE45561_Pages_Posts
{
    private static $ins = null;

    public static function init()
    {
        add_action(\'plugins_loaded\', array(__CLASS__, \'instance\'));
    }

    public static function instance()
    {
        is_null(self::$ins) && self::$ins = new self;
        return self::$ins;
    }

    protected function __construct()
    {
        add_action(\'p2p_init\', array($this, \'connections\'));
    }

    public function connections()
    {
        p2p_register_connection_type(array(
            \'name\'      => \'page_to_posts\',
            \'from\'      => \'page\',
            \'to\'        => \'post\',
            \'admin_box\' => array(
                \'show\'    => \'from\', // only show on pages
                \'context\' => \'advanced\', // put admin box in main col, instead of side
            ),
        ));
    }
}
在前端连接帖子也很简单。循环中的某个地方:

<?php
$connected = p2p_type(\'pages_to_posts\')->get_connected($post->ID);
if($connected->have_posts())
{
    while($connected->have_posts())
    {
        $connected->the_post();
        // normal loop stuff here
    }
}
如果您不想使用该插件,有几个选项。

将类别与给定页面关联,从该类别中拉入帖子。您可以将此设置为静态,也可以添加一个元框我可以为您提供上述两个选项的一些示例代码,但我强烈建议您查看帖子2。

SO网友:David

如果我理解正确,您将需要类似于WP\\u Query的东西来迭代不同的类别、页面等。使用以下方法:

function myAwardsPage() {

    // The Query 

    $the_query = new WP_Query( \'category_name=awards\' );
    // get Params from: http://codex.wordpress.org/Class_Reference/WP_Query#Parameters
    // if multiple use array(\'\',\'\')

    // The Loop 
    while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <?php the_title(); ?>
    <?php the_content(); ?>

    <?php endwhile;

     // Reset Post Data
     wp_reset_postdata();
}
并将其添加到页面模板中。php文件,然后无论您想在何处显示该查询put:

 <?php myAwardsPage(); ?>

结束

相关推荐

Pagination for sub-pages

我有一个顶级页面,有很多子页面当用户访问顶级页面时,他们当前会看到标题/缩略图/摘录all 子页面的如何分页子页面的显示,以便only 每次显示3,使用户可以通过典型的“上一页1、2、3、4、5下一页>”分页菜单进行导航?任何帮助都将不胜感激。谢谢