web-dev-qa-db-ja.com

カスタム投稿タイプのループとDisqus

現在取り組んでいるサイトの "キャンペーン"というCPTを作成しました。コンテンツを表示するページと最新のキャンペーンを表示するカスタムループを作成しました。

私はコメントのために私はDisqusを使っていて、私はここでDisqusを使いたいのですが - それは表示されていないようです。コメントコードを次のように修正してみました。

<?php $withcomments = "1"; comments_template(); ?>

しかし、私はDisqusではなく、通常のコメントフォームを受け取ります。どのようにそれを回避するためのアイデアがありますか?

前もって感謝します!

8-2-11 - テーマ内のcomments.phpファイルをプラグインからのコメントファイルで上書きするという一時的な回避策を見つけました - しかしそれは両者を同期させることを意味しますより良い解決策を見つけることができます。

2
Andrew Parker

CPTを comments配列register_post_type()supportsで登録していますか?

Disqusプラグインコードを簡単に見ると、関連するものをチェックする dsq_comments_template() 関数があり、コメントのサポートが宣言されていない場合はおそらくfalseを返します。

1
Rarst

これはおそらくばかげていると私はあなたがおそらく事前にこれをチェックしたと確信しています...しかし、それは私のためにトリックをしました。結局、私のユーザーは私のカスタム投稿の多くで "コメントを許可する"オプションのチェックを外していました、そして私は先に進んでそれを最初にチェックしませんでした。

とにかく、これをデバッグするために、おそらく 'disqus.php'ファイルのdisqusプラグインを671行目付近で修正することができるでしょう。これはdsq_comments_template($value)関数を見つけるでしょう。これは通常のコメントの代わりにdisqusをロードするものです。

私がしたことはそれがdisqusをロードしない条件をチェックすることでした。

if ( !( is_singular() && ( have_comments() || 'open' == $post->comment_status ) ) ) {
    echo "sing?: ".is_singular()." have_comm?: ".have_comments().
            " open?:".$post->comment_status; // this was my modification ;)
    return;
}

if ( !dsq_is_installed() || !dsq_can_replace() ) {
    return $value;
}

$post->comment_statusがそれを返す原因となっていることに気付いたとき、私はすべての投稿をチェックし、最初に明白なものをチェックしないことに憤慨しました。とにかく、それが役立つことを願っています!

0
The WebMacheter