PHP显示错误的自定义分类图像

时间:2012-12-10 作者:elkirkmo

我正在使用Taxonomy Images plugin 尝试在显示网站所有类别的页面上拉入自定义类别的类别图像。出于某种原因,此代码输出正确的名称和描述,但只显示一个类别图像。

我希望这些图像能够像其他类别功能一样,为每个类别填充适当的数据,并在页面上显示所有类别。如果我使用echo wp_get_attachment_image( $imgs[$id], \'thumbnail\' ); 它发布所有图像,但如果我将其从echo 要使其成为变量,它只显示一个图像。

$imgs = get_option( \'taxonomy_image_plugin\' );
$categories = get_terms(\'portfolio_category\', array(\'orderby\' => \'id\', \'hide_empty\' => 0));
foreach ( $categories as $category ) {
    $id = $category->term_id;
    $img = wp_get_attachment_image( $imgs[$id], \'thumbnail\' );
}
    for($i=0; $i<count($categories); $i++)
     {
     echo(\'<h2>\'.$categories[$i]->name.\'</h2>\');
     echo($img);
     echo(\'<p>\'.$categories[$i]->description.\'</p>\');
}
我想我只是对如何添加计数器感到困惑[$i] 以便此代码输出正确的类别图像。任何帮助都将不胜感激。

2 个回复
最合适的回答,由SO网友:elkirkmo 整理而成

Chip走的是正确的道路,但关闭第一个循环只会发布一个类别,而不是每个类别。我最后做的是关闭第一个循环,并在第二个循环中调用ID和img。

$imgs = get_option( \'taxonomy_image_plugin\' );
$categories = get_terms(\'portfolio_category\', array(\'orderby\' => \'id\', \'hide_empty\' => 0));
for($i=0; $i<count($categories); $i++)
    {
    $id=$categories[$i]->term_id;
    $img=wp_get_attachment_image($imgs[$id], \'thumbnail\');
        echo(\'<h2>\'.$categories[$i]->name.\'</h2>\');
        echo($img);
        echo(\'<p>\'.$categories[$i]->description.\'</p>\');
    }

SO网友:Chip Bennett

我认为(至少部分)问题在于,您有一个嵌套循环,而实际上并不需要它。

的输出get_terms() 是对象的数组。所以$categories 应该是一个对象数组。

在此处循环遍历此对象数组:

foreach ( $categories as $category ) {
    $id = $category->term_id;
    $img = wp_get_attachment_image( $imgs[$id], \'thumbnail\' );
}
问题是你要关闭这个循环,然后循环$categories 第二次:

for($i=0; $i<count($categories); $i++)
     {
     echo(\'<h2>\'.$categories[$i]->name.\'</h2>\');
     echo($img);
     echo(\'<p>\'.$categories[$i]->description.\'</p>\');
}
但问题是$id$img 将基于中的最后一个对象保留其值$categories.

我建议去掉第二个循环,并在原始循环中执行所有操作foreach 回路:

foreach ( $categories as $category ) {
    // Set ID and IMG
    $id = $category->term_id;
    $img = wp_get_attachment_image( $imgs[$id], \'thumbnail\' );

    // Output markup
     echo(\'<h2>\'.$category->name.\'</h2>\');
     echo($img);
     echo(\'<p>\'.$category->description.\'</p>\');
}
这应该可以解决不同步循环的问题,尽管我不完全确定$img, 因为我不熟悉您使用的插件,也不知道它是如何将选项保存到数据库的。

结束

相关推荐

WordPress-根据选定的分类类别创建同一个Single-Customtype.php的多个版本

我已经注册了一个自定义帖子类型“Clients”,并为该帖子类型注册了一个分类法,用于对帖子进行分类。目前,客户有三个类别:“徽标项目”、“视频项目”和“网页设计”项目。一些客户端可能属于多个类别。在客户帖子的编辑页面上,我有一个灵活的字段布局生成器,可以让您为每个类别类型(徽标、web、视频…)生成“块”内容。每个区块将具有与每个类别相关的唯一字段(视频上传工具、徽标图像库等)我的问题是,虽然我可以在分类类别页面上显示相关内容(仅显示web设计类别中所有客户端的web设计…),用户单击以查看此客户端后,