Vinculando dois tipos de postagem

8

e obrigado antecipadamente por sua ajuda.

Fiz algumas pesquisas e essa pergunta foi respondida algumas vezes com referência ao plug-in "posts 2 posts", mas a documentação é muito "centrada no codificador" - eu posso e estou confortável em obter meu mãos sujas, mas eu preciso de uma melhor documentação passo a passo do que a que está disponível lá. :)

Aqui está o que eu preciso. Estou usando o gPress para gerar "Locais" usando o tipo de postagem personalizada. Isso está funcionando incrivelmente bem. O que preciso fazer é poder 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 também as informações do local relacionadas ao evento.

Todas as sugestões são apreciadas!

John
fonte

Respostas:

9

As postagens em postagens do Scribu são um ótimo e simples plugin, tenho certeza de que podemos ajudá-lo a fazê-lo funcionar. O uso básico é bastante direto.

supondo que seus tipos de postagem personalizados sejam 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 tornará as meta boxes para atribuir relacionamentos disponíveis em suas telas personalizadas de pós-edição.

para suas páginas de local e evento únicas, você pode criar modelos personalizados no seu tema, seguindo a hierarquia de modelos do WordPress single-{post_type}.php, no seu caso single-event.phpe single-place.php. você pode duplicá-los a partir do modelo single.php.

Para listar conexões, precisamos apenas de um pouco de código dentro desses modelos, sempre que quisermos exibir a lista. isso iria no modelo de local e geraria 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();
?>
Milo
fonte
Milo, brilhante - isto é o que eu precisava, e por algum motivo eu não estava achando nada enunciados bastante desta forma, então eu aprecio o tempo que você levou para ligar isso. Felicidades!
John
11
A partir da versão 1.4 do Post2Post, você deve usar 'p2p_init' em vez de 'init' para registrar os tipos de conexão.
Stephan