Caixa de comentários do Facebook na primeira página

4

Eu tenho uma instalação do WordPress 3.5.1 no meu WordPress Shack , com o Plugin do Facebook 1.3.1 instalado e o tema TwentyTwelve 1.1. Eu tenho as configurações no Facebook - caixa de comentários para que eu exiba a caixa de comentários em posts e páginas. Em Configurações - Leitura, verifiquei uma página estática como página inicial, "Bem-vindo". Marquei a caixa de seleção "Permitir comentários" para todas as páginas do meu site.

No entanto, a caixa de comentários do Facebook é exibida em todas as páginas, exceto na primeira página, "Bem-vindo".

Este definitivamente é um problema com a primeira página, porque se eu selecionar "últimas mensagens" para exibir na primeira página, a caixa de comentários é exibida na página de boas-vindas.

Como posso fazer com que a caixa de comentários seja exibida na primeira página também?

Eu, claro, publiquei este no WordPress fóruns de suporte para o Facebook, mas eu não recebo nenhuma resposta.

    
por Keelan 26.03.2013 / 12:07

4 respostas

6

Fast 'n' Hacky

O problema pode ser resolvido alterando a linha 319 em facebook.php para o seguinte:

if (is_home()) {

Desta forma, a página inicial não é tratada como uma página home , mas como uma página normal, para a qual as configurações do recurso do facebook podem ser aplicadas (e serão tratadas corretamente).

Mais elegante / complexo

Aqui está uma versão não hackeada . Coloque o seguinte no seu functions.php :

add_action('template_redirect', 'force_facebook_comments');
function force_facebook_comments() {
    if (is_front_page()) {
        $features = get_option('facebook_home_features');
        $features['comments'] = true;
        update_option('facebook_home_features', $features);
        add_filter('comments_template', array('Facebook_Comments', 'comments_template'));
    }
    // If you want to handle the 'home' page differently, undo the above stuff
    // elseif (is_home()) {
        // $features = get_option('facebook_home_features');
        // $features['comments'] = false;
        // update_option('facebook_home_features', $features);
        // remove_filter('comments_template', array('Facebook_Comments', 'comments_template'));
    // }
}
    
por tfrommen 12.04.2013 / 21:07
3

Eu não tenho o plugin para testar isso, mas olhando as linhas para hackear, como apontado por @tf:

if ( is_home() || is_front_page() ) {
    $enabled_features = get_option( sprintf( $option_name, 'home' ) );
} else if ( is_archive() ) {
    // all archives wrapped in one option
    // is_post_type_archive || is_date || is_author || is_category || is_tag || is_tax
    $enabled_features = get_option( sprintf( $option_name, 'archive' ) );
} else {
    $post_type = get_post_type();
    if ( $post_type )
        $enabled_features = get_option( sprintf( $option_name, $post_type ) );
}

Eu acho que é possível curto-circuito na terceira opção - } else { - usando apply_filters( 'pre_option_' . $option, false ); .

Algo como:

foreach( array( 'post', 'page' ) as $pt )
    add_filter( "pre_option_facebook_{$pt}_features", "callback" );

function callback()
{
    // let the option work normally
    if( !is_front_page() )
        return false;

    return get_option( 'facebook_home_features' );
}
    
por brasofilo 12.04.2013 / 22:48
-1

De acordo com a Hierarquia de modelos front-page.php ou home.php terá precedência sobre as outras páginas.

Depois de analisar o código do plug-in do Facebook, as opções parecem ser um conjunto diferente de opções para esses casos.

    
por Steve Buzonas 12.04.2013 / 19:28
-1

Parece que pode ser relacionado ao tema. Eu não usei muito Twenty Twelve, mas é a página inicial gerada a partir do Aparência > Widget seção?

Existem vários temas que geram o conteúdo da página inicial com base no widget correspondente. Procure uma caixa chamada Content Left Content Right , Homepage Content ou algo parecido.

Isso me tropeçou algumas vezes.

Você afirmou que não há front-page.php ou home.php , mas, se bem me lembro, deve haver um content-home.php chamado de single.php ou page.php .

    
por ckpepper02 12.04.2013 / 20:17