将检索到的自定义字段值链接到其各自的帖子

时间:2013-08-18 作者:gurung

使用下面的代码,我已经能够从所有帖子中为特定的自定义元键“realname”创建一个自定义字段值列表(在单独的页面模板上)。代码为我提供了一个很好的按字母顺序排列的所有自定义值列表。

<?php
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
    global $wpdb;
    if( empty( $key ) )
        return;
    $r = $wpdb->get_col( $wpdb->prepare( "
        SELECT pm.meta_value FROM {$wpdb->postmeta} pm
        LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
        WHERE pm.meta_key = \'%s\' 
        AND p.post_status = \'%s\' 
        AND p.post_type = \'%s\'
        ORDER BY pm.meta_value ASC
        ", $key, $status, $type ) );

    return $r;
}
?>
<?php $my_list_items = get_meta_values( \'realname\' ); ?>
<h3>PEOPLE ALREADY REGISTERED - ALPHABETICAL ORDER :</h3>
<ol>
<?php foreach( $my_list_items as $my_list_item ) { ?>

            <li><?php echo $my_list_item; ?></li>
<?php } ?>
</ol>
现在,请建议我如何将检索到的列表项(自定义值)链接到各自的帖子。我是个傻瓜,请原谅我的无知。我尝试了以下方法,但没有效果。

<li><a href="<?php the_permalink() ?>"><?php echo $my_list_item; ?></a></li>

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

通过如下所示修改代码并使用get_results 函数而不是get\\u col函数。

<?php
function get_meta_values( $key = \'\', $type = \'post\', $status = \'publish\' ) {
global $wpdb;
if( empty( $key ) )
    return;
$r = $wpdb->get_results( $wpdb->prepare( "
    SELECT pm.meta_value, p.ID FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = \'%s\' 
    AND p.post_status = \'%s\' 
    AND p.post_type = \'%s\'
    ORDER BY pm.meta_value ASC
    ", $key, $status, $type ) );

return $r;
}
?>
<?php $my_list_items = get_meta_values( \'realname\' ); ?>
<h3>PEOPLE ALREADY REGISTERED - ALPHABETICAL ORDER :</h3>
<ol>
<?php 
if ( $my_list_items )    {
foreach( $my_list_items as $my_list_item ) { ?>

        <li><a href="<?php echo get_permalink( $my_list_item->ID ); ?>"><?php echo $my_list_item->meta_value; ?></a></li>
<?php } 
}?>
</ol>

SO网友:Michelle

我认为您可以在foreach循环中执行以下操作:

<?php echo get_permalink($my_list_item->ID); ?>
如果不起作用,请通过执行print\\r($my\\u list\\u items)检查$my\\u list\\u items的值,以查看如何从该数组中访问帖子ID。

希望这有意义/有帮助!

结束

相关推荐