Vinculando dois tipos de postagem

8

e obrigado antecipadamente por sua ajuda.

Eu fiz algumas pesquisas, e essa pergunta foi respondida algumas vezes com referência ao plug-in "posts 2 posts", mas a documentação sobre isso é muito "centrada no codificador" - eu posso e Confortável sujar as mãos, mas preciso de uma documentação passo a passo melhor do que a que está disponível lá. :)

Aqui está o que eu preciso. Estou usando o gPress para gerar "Lugares" usando o tipo de postagem personalizado. Isso está funcionando incrivelmente bem. O que preciso fazer é adicionar "Eventos" a um local. Posso usar um tipo de postagem personalizado para capturar todos os detalhes do evento, mas gostaria de poder anexar eventos a um local específico e vice-versa. Se alguém estivesse visualizando a postagem do Evento, haveria uma maneira fácil de extrair as informações do Lugar relacionadas ao Evento.

Qualquer sugestão é apreciada!

    
por John 03.05.2011 / 23:57

1 resposta

9

Scribu's posts-to-posts é um plugin ótimo e simples, tenho certeza que podemos ajudá-lo a trabalhar. O uso básico é bastante simples.

assumindo que seus tipos de postagem personalizados são nomeados 'place' e 'event' , o código a seguir entraria no arquivo functions.php do seu tema:

function my_connection_types() {
    p2p_register_connection_type( array(
        'name' => 'events_to_places', 
        'from' => 'event',
        'to' => 'place',
    ) );
}
add_action( 'p2p_init', 'my_connection_types', 100 );

isso fará com que as meta caixas definam relacionamentos disponíveis em suas telas de edição de postagem personalizadas.

para suas páginas de local único e evento, você pode criar modelos personalizados em seu tema seguindo a hierarquia de modelos do WordPress single-{post_type}.php , então, no seu caso, single-event.php e single-place.php . você pode duplicar estes a partir do template single.php.

para listar as conexões, precisamos apenas de um pouco de código dentro desses modelos, onde quisermos exibir a lista. isso iria no modelo de lugar e na saída de eventos conectados:

<?php
$connected = new WP_Query( array(
    'connected_type' => 'events_to_places', 
    'connected_items' => get_queried_object()
) );

echo '<p>Related events:</p>';
echo '<ul>';
while( $connected->have_posts() ) : $connected->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;
echo '</ul>';

wp_reset_postdata();
?>
    
por Milo 04.05.2011 / 03:01