在循环之外回显自定义分类字段值

时间:2011-03-12 作者:Co-Op Reviews

我有一个称为“游戏”的自定义分类法;帖子有一个分类值,即Halo,它有七个不同的字段;game\\u名称、game\\u流派等。

我正在尝试回应给定帖子的自定义分类法的元数据,尽管运气不好。我尝试使用一小块PHP来响应field game\\u名称(设计为在PHP小部件中运行)的元数据,但它似乎不起作用。它使用插件创建的自定义挂钩Simple Term Meta

<?php
global $term;
echo get_term_meta($term->ID, \'game_name\', true);
?>
如果能帮我解决这个问题,我将不胜感激,我没想到会这么复杂。

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

我想你是想在看一篇文章时使用这个?例如,在single.php?

如果是这样的话,您需要先获取术语,然后获取元。

global $post;

if ( $terms = get_the_terms( $post->ID, \'game\' ) ) {

    // $term = $terms[0]; // WRONG! $terms is indexed by term ID!
    $term = array_shift( $terms ); // RIGHT! Will get first term, and remove it from $terms array

    echo get_term_meta( $term->term_id, \'game_name\', true );

}

UPDATE

由于代码级别已经提高,最好将其包装到函数中。将以下内容放入functions.php;

/**
 * Get the game box image for a post.
 * 
 * @param int|object $post
 * @return string
 */
function get_game_box_image( $post = 0 )
{
    if ( ( !$post = get_post( $post ) ) || ( !$terms = get_the_terms( $post->ID, \'game\' ) ) )
        return \'\'; // bail

    $term = array_shift( $terms );
    if ( $box = get_term_meta( $term->term_id, \'game_box\', true ) ) {

        $rel = str_replace( content_url(), \'\', $box );
        if ( is_file( WP_CONTENT_DIR . \'/\' . ltrim( $rel, \'/\' ) ) )
            return \'<div style="text-align: center;"><img src="\' . $box . \'" alt="" /></div>\';
    }

    return \'\';
}
然后显示游戏盒图像,这样调用它;

<?php echo get_game_box_image(); ?>
您可以选择将post对象或ID参数传递给函数,以获取特定post的游戏盒图像。

结束

相关推荐