2012-05-04 116 views
0

在wordpress中,我有自定义页面,并在页面内尝试调用特定类别的最新帖子。将自定义变量添加到get_posts

这样做,我说这个创建变量...

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

,并在页面的自定义字段,我加mom_cat =(可变#)

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

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

Hoever那不工作。如何将变量添加到“category =”以便根据我的自定义字段设置显示类别?

感谢

+0

我做这个了... ... $ myposts = get_posts(阵列( 'numberposts'=> 4, '分类'=> $猫)); –

回答

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')); 

更新:我不会建议使用页面显示类别信息,但我相信你有你的理由。我仍然会避免在“自定义字段”中放置类别标识,因为如果您的某个类别标识发生更改,则可能会导致大量问题。

我会建议您的情况是命名这些特定页面完全相同的匹配类别。然后做这样的事情:

<?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; 
} 
?> 
+0

如果你想抓住你的自定义帖子和标准帖子,请将'post_type'=>'custom_post_name'改为:'post_type'=> array('custom_post_name','post') – maiorano84

+0

嗯,我不确定是否我在原文中正确解释了它。以汽车为例,我有一个博客讲述宝马,奔驰,雷克萨斯等。 我为宝马创建了一个专门的页面,然后为奔驰等创建了一个页面。我希望宝马页面能够绘制我列出的最后5篇帖子是在宝马类别下列出的。我将宝马类别(如#5)放在自定义字段中,那将是我的变量,但不起作用。 –

+0

对不起,我读“自定义页面”为“自定义文章”。请审查,并让我知道这是否有帮助。 – maiorano84