帖子2帖子:显示连接到相同的其他自定义类型但具有另一个连接的自定义类型

时间:2013-01-09 作者:Florianl

我正在创建一个网球网站。我有两种自定义类型:球员和锦标赛。

我想在锦标赛页面和球员页面上显示决赛结果。也就是说,在锦标赛的每一页上,我都想显示决赛选手的名字(赢家和输家),在球员的每一页上,我想显示决赛选手的名字(并显示其相应的对手)。我希望我可以理解!

在插件帖子2的帮助下,我在球员和锦标赛之间创建了2个连接:

    p2p_register_connection_type( array(
            \'name\' => \'won_final\',
            \'from\' => \'player\',
            \'to\' => \'tournament\'
        ) );
and
    p2p_register_connection_type( array(
            \'name\' => \'lost_final\',
            \'from\' => \'player\',
            \'to\' => \'tournament\'
        ) );
我不知道当我显示某个球员入围的锦标赛时,我可以使用什么代码来查找和显示该球员的对应对手。

有什么可以帮我的吗?谢谢

1 个回复
SO网友:windyjonas

也许这可以让你开始:

function get_loser( $winner_id ) {
    global $post;
    $tournament = get_connected_id( $winner_id, \'won_final\' );
    $loser  = get_connected_id( $tournament[\'ID\'], \'lost_final\' );

    return $loser;
}

function get_connected_id( $from_id, $connected_type ) {
    global $post;
    $result = array(
        \'ID\' => null,
        \'post_title\' => null,
    );

    if ( null === $from_id ) return $result;

    $connected = get_posts( array(
            \'connected_type\' => $connected_type,
            \'connected_items\' => $from_id,
            \'nopaging\' => true,
        ) 
    );
    if ( ! empty( $connected ) ) :
        $result[\'ID\'] = $connected[0]->ID;
        $result[\'post_title\'] = $connected[0]->post_title;
    endif;

    return $result;
}
编辑:如果你想要某个球员赢得的所有锦标赛中的所有失利球员,那么我建议你这样做:

function get_losers( $winner_id ) {
    global $post;

    // get all tournaments won
    $tournaments = get_connected_id( $winner_id, \'won_final\' );

    // this is the resulting array, init it.
    $all_losers = array();

    // Go through all the tournaments and find the loser
    foreach( $tournaments as $tournament ):
        $losers  = get_connected_id( $tournament->ID, \'lost_final\' );
        foreach( $losers as $loser ) :
            // Here\'s a new loser, store the id and tournament id
            $new_loser = array();
            $new_loser[\'ID\'] = $loser->ID;
            // add more fields if you like
            $new_loser[\'tournament_id\'] = $tournament->ID;
            $all_losers[] = $new_loser;
        endforeach;
    endforeach;

    // We are done return the array of losers.
    return $all_losers;
}

function get_connected_id( $from_id, $connected_type ) {
    global $post;
    $result = array(
        \'ID\' => null,
        \'post_title\' => null,
    );

    if ( null === $from_id ) return $result;

    $connected = get_posts( array(
            \'connected_type\' => $connected_type,
            \'connected_items\' => $from_id,
            \'nopaging\' => true,
        ) 
    );

    return $connected;
}

结束

相关推荐

Wp-content/plugins中的权限问题

我在本地机器上安装了一个WP,试图用插件弄脏我的手。我希望从github克隆一个包含此插件代码的项目。然而,我没有插件内部的权限,作为一个没有su权限的普通用户,我无法做到这一点。(当然,我可以成为根并这样做,但我不认为这是应该的)。然后,默认情况下,WP安装中的文件夹将组设置为“tape”,这对我来说很奇怪。本地WP安装上内部文件夹的正确权限应该是什么?