将自定义变量添加到get_posts

时间:2012-05-04 16:11:39

标签: wordpress

在wordpress中,我有自定义页面,在我试图调用特定类别的最新帖子的页面内。

这样做,我添加了这个来创建变量......

$cat = get_post_meta($post->ID, "mom_cat", true);   

在页面的自定义字段中,我添加了mom_cat =(变量#)

在我的帖子中,我试图根据自定义字段中的变量类别#I显示最近的帖子。我试过这个,但它没有用......

<?php
global $post;
$myposts = get_posts('numberposts=4&category=$cat' );
    foreach($myposts as $post) :
?>

不过那是行不通的。如何根据我的自定义字段设置向“category =”添加变量以显示类别?

由于

1 个答案:

答案 0 :(得分:2)

当Wordpress拥有您可以使用的所有工具时,您不应该使用自定义字段来定义类别。您应该做的是找到您的自定义帖子的注册位置,并添加:

'taxonomies' => array('category')

...到您的参数数组。这样您就可以检查自定义帖子所需的类别。如果找不到自定义帖子类型的注册位置,请将其添加到functions.php文件中:

add_action('init', 'add_category_to_custom');
function add_category_to_custom()
{
    register_taxonomy_for_object_type('category', 'custom_post_name');
}

那么您可以像这样引用自定义帖子:

$posts = get_posts(array('numberposts' => 4, 'category' => $cat_ID, 'post_type' => 'custom_post_name'));

更新:我不建议使用Pages显示类别信息,但我确定您有理由。我仍然会避免在自定义字段中放置类别ID,因为如果您的某个类别ID发生更改,则可能会导致很多问题。

在您的案例中,我建议将这些特定页面命名为与其匹配类别完全相同。然后做这样的事情:

<?php
/*
IF THE PAGE HAS A MATCHING CATEGORY,
DISPLAY 5 OF THE MOST RECENT POSTS IN THAT CATEGORY
*/
if($catID = get_cat_ID(get_the_title(get_the_ID())))
{
    $posts = get_posts(array('numberposts' => 5, 'category' => $catID));
    foreach($posts as $post) : setup_postdata($post);
    ?>
        <!-- POST HTML GOES HERE -->
    <?php
    endforeach;
}
?>