すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

スポンサーリンク

WordPress Popular Posts Ajax有効時にエラーになった際の対処方法

WordPress

おはようございます、鈴木俊吾(すずしん)です。

私はWordPressを使っているのですが…。 人気記事を表示するのにプラグインWordPress Popular Posts」を利用しています。

また、WordPressの表示速度を高速化する目的で「WP Super Cache」も導入していたのですが…。 人気記事のアクセス数が正しくカウントされないという現象が発生しました。

そこで、今回の記事ではこの問題の解決方法について書いてみようと思います。 同様の問題で困っている方の参考になれば幸いです。

WordPress Popular Postsのカウントがされない時の対処法

基本的に、キャッシュ系のプラグインをインストールして使用している時に発生する問題のようです。 対処方法としては、WordPress Popular Postsの設定の「Ajaxify widget」を有効化すると解決します。 「設定」→「WordPress Popular Posts」→「Tools」と移動して、Ajaxify widgetを「Enabled」にします。

これで大丈夫のはずなのですが…。 あなたがお使いのWordPressテーマによっては、この設定をするとエラーが発生することがあります。 これはサイドバーを登録する際に、IDが付加されていないのが原因です。

そのため、register_sidebarでサイドバーを登録している部分(おそらくsidebar.phpもしくはfunctions.phpにあると思います)を修正します。 before_widgetの部分のタグのid要素にID(%1$s)を付加してやります。 例として、私が使用しているテーマ(マテリアル)では以下のようにします。

[php] if (function_exists(‘register_sidebar’)) { register_sidebar(array( ‘name’ => ‘サイドバー(広告上)’, ‘id’ => ‘sidebar-1’, ‘before_widget’ => ‘<div id="%1$s" class="box">’, ‘after_widget’ => "</div>", ‘before_title’ => "<h2 class=‘box-header main-color-font’>", ‘after_title’ => ‘</h2>’ ));

register_sidebar(array(
    'name' =&gt; 'サイドバー(広告下)',
    'id' =&gt; 'sidebar-2',
    'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;box&quot;&gt;',
    'after_widget' =&gt; &quot;&lt;/div&gt;&quot;,
    'before_title' =&gt; &quot;&lt;h2 class='box-header main-color-font'&gt;&quot;,
    'after_title' =&gt; '&lt;/h2&gt;'
));

register_sidebar(array(
    'name' =&gt; 'サイドバー最上部にaffiバナー(300px以内)',
    'id' =&gt; 'sidebar-3',
    'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;affi-banner&quot;&gt;',
    'after_widget' =&gt; &quot;&lt;/div&gt;&quot;,
    'before_title' =&gt; &quot;&lt;h2 class='box-header main-color-font'&gt;&quot;,
    'after_title' =&gt; '&lt;/h2&gt;'
));

register_sidebar(array(
    'name' =&gt; 'サイドバー最下部にaffiバナー(300px以内)',
    'id' =&gt; 'sidebar-4',
    'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;affi-banner&quot;&gt;',
    'after_widget' =&gt; &quot;&lt;/div&gt;&quot;,
    'before_title' =&gt; &quot;&lt;h2 class='box-header main-color-font'&gt;&quot;,
    'after_title' =&gt; '&lt;/h2&gt;'
));

} [/php]

この設定を行えば、おそらくAjaxが有効の状態で人気記事が正しく表示されるようになると思います。 お疲れ様でした。