it-swarm.com.de

Facebook-Kommentarfeld auf der Startseite

Ich habe eine WordPress 3.5.1-Installation auf meinem WordPress Shack , mit dem Facebook-Plugin 1.3.1 und dem TwentyTwelve 1.1-Theme. Ich habe die Einstellungen im Facebook - Kommentarfeld, so dass ich das Kommentarfeld auf Posts und Seiten anzeige. In den Einstellungen - Lesen habe ich eine statische Seite als Startseite "Willkommen" ausgewählt. Ich habe das Kontrollkästchen "Kommentare zulassen" für jede Seite auf meiner Website aktiviert.

Das Facebook-Kommentarfeld wird jedoch auf jeder Seite mit Ausnahme der Startseite "Willkommen" angezeigt.

Dies ist definitiv ein Problem mit der Startseite, da das Kommentarfeld auf der Begrüßungsseite angezeigt wird, wenn ich "Neueste Beiträge" auswähle, die auf der Startseite angezeigt werden sollen.

Wie kann ich sicherstellen, dass das Kommentarfeld auch auf der Startseite angezeigt wird?

Natürlich habe ich dies gepostet im WordPress-Support-Forum für Facebook, aber ich bekomme keine Antwort.

4
Keelan

Fast 'n' Hacky

Das Problem kann behoben werden, indem Zeile 319 in facebook.php wie folgt geändert wird:

if (is_home()) {

Auf diese Weise wird die Startseite nicht als home page behandelt, sondern als reguläre Seite, auf die die Facebook-Funktionseinstellungen angewendet werden können (und korrekt behandelt werden).


Eleganter/komplexer

Hier ist eine nicht-hackische Version. Tragen Sie folgendes in Ihren functions.php ein:

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'));
    // }
}
6
tfrommen

Ich habe nicht das Plugin, um dies zu testen, aber ich schaue mir die zu hackenden Zeilen an, wie von @tf gezeigt:

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 ) );
}

Ich denke, es ist möglich, die dritte Option -} else {- mit apply_filters( 'pre_option_' . $option, false ); kurzzuschließen.

So etwas wie:

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' );
}
3
brasofilo