WordPress Shack にWordPress 3.5.1をインストールし、 Facebookプラグイン 1.3.1をインストールし、 TwentyTwelve 1.1テーマ。私は投稿とページにコメントボックスを表示するようにFacebook - コメントボックスの設定をしています。設定 - 閲覧で、フロントページの「ようこそ」として静的ページを確認しました。自分のサイトのすべてのページで[コメントを許可する]チェックボックスをオンにしました。
ただし、Facebookのコメントボックスは、フロントページの「ようこそ」以外のすべてのページに表示されます。
フロントページに表示する「最新の投稿」を選択した場合、コメントボックスがウェルカムページに表示されるため、これは間違いなくフロントページの問題です。
コメントボックスがフロントページにも表示されるようにするにはどうすればよいですか。
私はもちろん これを をFacebookのWordPressサポートフォーラムに投稿しましたが、返事がありません。
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'));
// }
}
これをテストするプラグインはありませんが、@ 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' );
}