web-dev-qa-db-ja.com

フロントページのFacebookのコメントボックス

WordPress Shack にWordPress 3.5.1をインストールし、 Facebookプラグイン 1.3.1をインストールし、 TwentyTwelve 1.1テーマ。私は投稿とページにコメントボックスを表示するようにFacebook - コメントボックスの設定をしています。設定 - 閲覧で、フロントページの「ようこそ」として静的ページを確認しました。自分のサイトのすべてのページで[コメントを許可する]チェックボックスをオンにしました。

ただし、Facebookのコメントボックスは、フロントページの「ようこそ」以外のすべてのページに表示されます。

フロントページに表示する「最新の投稿」を選択した場合、コメントボックスがウェルカムページに表示されるため、これは間違いなくフロントページの問題です。

コメントボックスがフロントページにも表示されるようにするにはどうすればよいですか。

私はもちろん これを をFacebookのWordPressサポートフォーラムに投稿しましたが、返事がありません。

4
Keelan

ファスト 'n'ハッキー

facebook.phpの319行を次のように変更することで問題を解決できます。

if (is_home()) {

このように、フロントページはホームページとして扱われるのではなく、通常のページとして扱われます。正しく処理されます。


もっとエレガント/コンプレックス

これがハッキングのないバージョンです。以下を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'));
    // }
}
6
tfrommen

これをテストするプラグインはありませんが、@ 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 ) );
}

3番目のオプション-} else {-を apply_filters( 'pre_option_' . $option, false ); を使って短絡することは可能だと思います。

何かのようなもの:

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