Ganchos / filtros do WordPress inseridos antes do conteúdo ou após o título

27

tentando inserir conteúdo antes do conteúdo da postagem em minhas funções.php - Eu sei como usar os ganchos wp regulares, mas não sei como inserir em outras áreas.

Tentei isso, mas ele mata o conteúdo em qualquer outro tipo de postagem:

function property_slideshow( $content ) {
 if ( is_single() && 'property' == get_post_type() ) {
    $custom_content = '[portfolio_slideshow]';
    $custom_content .= $content;
    return $custom_content;
    } 
}
add_filter( 'the_content', 'property_slideshow' );

Como eu faço isso condicional?

    
por Jason 24.01.2012 / 04:49
fonte

2 respostas

37

Use apenas o filtro the_content , por exemplo:

<?php
function theme_slug_filter_the_content( $content ) {
    $custom_content = 'YOUR CONTENT GOES HERE';
    $custom_content .= $content;
    return $custom_content;
}
add_filter( 'the_content', 'theme_slug_filter_the_content' );
?>

Basicamente, você acrescenta o conteúdo da postagem após seu conteúdo personalizado e, em seguida, retorna o resultado.

Editar

Como Franky @bueltge aponta em seu comentário, o processo é o mesmo para o título do post; basta adicionar um filtro ao the_title hook:

<?php
function theme_slug_filter_the_title( $title ) {
    $custom_title = 'YOUR CONTENT GOES HERE';
    $title .= $custom_title;
    return $title;
}
add_filter( 'the_title', 'theme_slug_filter_the_title' );
?>

Observe que, nesse caso, você anexa seu conteúdo personalizado após o título. (Não importa qual; eu apenas fui com o que você especificou na sua pergunta.)

Editar 2

O motivo pelo qual seu código de exemplo não está funcionando é porque você retorna apenas $content quando sua condicional é atendida . Você precisa devolver $content , não modificado, como else ao seu condicional. por exemplo:

function property_slideshow( $content ) {
    if ( is_single() && 'property' == get_post_type() ) {
        $custom_content = '[portfolio_slideshow]';
        $custom_content .= $content;
        return $custom_content;
    } else {
        return $content;
    }
}
add_filter( 'the_content', 'property_slideshow' );

Dessa forma, para postagens que não são do tipo "propriedade", $content é retornado, não modificado.

    
por Chip Bennett 24.01.2012 / 04:59
fonte
0
function property_slideshow( $content ) {
    if ( is_singular( 'property' ) ) {
        $custom_content = do_shortcode( '[portfolio_slideshow]' );
        $custom_content .= $content;
        }
        return $custom_content;
}
add_filter( 'the_content', 'property_slideshow' );

A tag condicional is_singular verifica se uma postagem única está sendo exibida e permite especificar o parâmetro $ post_types que neste caso é propriedade.

Além disso, convém consultar do_shortcode

    
por Brad Dalton 02.11.2014 / 20:29
fonte

Tags