【问题标题】:Adding a custom variable to get_posts向 get_posts 添加自定义变量
【发布时间】:2012-05-04 16:11:38
【问题描述】:

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

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

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

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

在我的帖子中,我试图根据我放在自定义字段中的变量类别来显示最近的帖子。这个我试过了,还是不行……

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

不管怎样都行不通。如何将变量添加到“category =”以根据我的自定义字段设置显示类别?

谢谢

【问题讨论】:

  • 我这样做了... $myposts = get_posts(array('numberposts' => 4, 'category' => $cat ));

标签: wordpress


【解决方案1】:

当 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;
}
?>

【讨论】:

  • 如果您想按类别获取自定义帖子和标准帖子,请将 'post_type' => 'custom_post_name' 更改为:'post_type' => array('custom_post_name','post')
  • 嗯,我不确定我在原始帖子中是否正确解释了它。以汽车为例,我有一个博客谈论宝马、梅赛德斯、雷克萨斯等。我专门为宝马创建了一个页面,然后为梅赛德斯等创建了一个页面。我希望宝马页面绘制最后 5 个我发布的帖子列在 BMW 类别下。我将 BMW 类别(比如 #5)放在自定义字段中,这将是我的变量,但没有用。
  • 抱歉,我将“自定义页面”读作“自定义帖子”。请查看,如果这有帮助,请告诉我。
猜你喜欢
  • 2017-07-09
  • 2014-02-21
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
相关资源
最近更新 更多