一个元键的多个元值

时间:2015-03-19 作者:Adrien Parad

我有一个元键“game”,包含这个元值“game 1,game 2”。

我希望在我的网站上显示此元值,如下所示:

<a href="http://www.url.com/game-1">game 1</a>
<a href="http://www.url.com/game-2">game 2</a>
谢谢你的帮助。

2 个回复
SO网友:EAMann

如果多个条目存储在一个元密钥中,则get_post_meta() 将返回这些值的数组。

get_post_meta( $post_id, \'game\' ); // returns [\'game 1\', \'game 2\']
如果要遍历集合,只需在PHP中使用for循环:

$games = get_post_meta( $post_id, \'game\' );
foreach( $games as $game ) {
    $game_slug = sanitize_title( $game ); // Turns "game 1" into "game-1" for URL usage
    $game_url = \'http://www.url.com/\' . $game_slug;

    echo \'<a href="\' . esc_url( $game_url ) . "\'>\' . esc_html( $game ) . \'</a>\';
}
我在上面为URL和标题添加了转义,这样呈现的标记将尽可能安全-我们不希望任何人将脚本标记嵌入游戏标题并劫持网站;-)

SO网友:sMyles

如果元以CSV格式(和单个元)保存,使用与@EAMann相同的输出处理,那么对于单个值元字段,您可以这样做:

$games = get_post_meta( $post_id, \'game\', true );
$games = explode(\',\', $games );
foreach( $games as $game ) {
    $game_slug = sanitize_title( $game ); // Turns "game 1" into "game-1" for URL usage
    $game_url = \'http://www.url.com/\' . $game_slug;

    echo \'<a href="\' . esc_url( $game_url ) . "\'>\' . esc_html( $game ) . \'</a>\';
}

结束

相关推荐