サポート » テーマ » BizVektorテーマオプションのSNS連携をカスタム投稿タイプでも可能にしたいです。

  • 現在カスタム投稿タイプをいくつか設定しております。

    SNS連携のfacebookコメント欄など(できればソーシャルボタンやfacebook LikeBox)で

    カスタム投稿タイプの選択肢を追加したいのですが方法はございますでしょうか?

    マニュアルでの追加はいくつか試していたのですができればカスタム投稿タイプを作成する度に

    自動で項目を増やしたいです。

    試したこととしましては子テーマにてsingle-〇〇.phpに以下のコードを追記しました。

    
    <div class="fb-comments" data-href="<?php the_permalink(); ?>" data-num-posts="2" data-width="640"></div>
    <style>
    .fb-comments,
    .fb-comments span,
    .fb-comments iframe[style] { width:100% !important; }
    </style>
    

    この方法ですと以下のタグでは表示できなくなります。

    
    <?php do_action('biz_vektor_fbComments'); ?>
    

    なのでもう一つ試した方法としまして以下のコードをfunctions.phpに追記しsns.phpを子テーマに移動して書き換えてみました。

    functions.php

    
    /*-------------------------------------------*/
    /*	facebook comment display page
    /*-------------------------------------------*/
    add_action('biz_vektor_fbComments', 'biz_vektor_fbComments2');
    function biz_vektor_fbComments2() {
    $options = biz_vektor_get_theme_options();
    global $wp_query;
    $post = $wp_query->get_queried_object();
    $fbCommentHiddenFlag = false ;
    // is stored as an array to $snsHiddens to split with "," $snsBtnsHidden
    
    $fbCommentHiddens = ( isset($options['fbCommentsHidden']) ) ? explode(",",$options['fbCommentsHidden']) : '';
    if ($fbCommentHiddens) :
    foreach( $fbCommentHiddens as $fbCommentHidden ){
    if (get_the_ID() == $fbCommentHidden) {
    $fbCommentHiddenFlag = true ;
    }
    }
    endif;
    // wp_reset_query();
    if (!$fbCommentHiddenFlag) {
    if (
    ( get_post_type() == 'news' && isset($options['fbCommentsNews']) && $options['fbCommentsNews'])
    )
    {
    ?>
    <div class="fb-comments" data-href="<?php the_permalink(); ?>" data-num-posts="2" data-width="640"></div>
    <style>
    .fb-comments,
    .fb-comments span,
    .fb-comments iframe[style] { width:100% !important; }
    </style>
    <?php
    }
    }
    }
    
    add_filter('biz_vektor_theme_options_validate', 'biz_vektor_sns_validate2', 19, 3);
    function biz_vektor_sns_validate2($output, $input, $defaults){
    
    // SNS
    $output['fbCommentsNews'] = (isset($input['fbCommentsNews']) && $input['fbCommentsNews'] == 'false')? 'false' : '';
    
    return $output;
    }
    
    add_filter('biz_vektor_default_options', 'biz_vektor_sns_default_option2');
    function biz_vektor_sns_default_option2($original_options){
    
    $options = array(
    
    'fbCommentsNews' => '',
    );
    
    return array_merge($original_options, $options);
    }
    

    sns.phpの<!– facebook comment –>に追記

    
    <label><input type="checkbox" name="biz_vektor_theme_options[fbCommentsNews]" id="fbCommentsNews" value="false" <?php if ($options['fbCommentsNews']) {?> checked<?php } ?>>News 投稿ページ</label>
    

    しかし以上の方法ですとカスタム投稿タイプを追加する度に追記しなければならないのと
    BizVektor自体がバージョンアップする度に修正しなければなりません。

    できればfunctions.phpのみでカスタム投稿タイプを追加する度に自動でSNS連携の
    facebook コメント欄などのチェックボックスの選択肢を増える様にしたいのですが
    可能でしょうか?

    どなたかわかる方がおられましたらご教授願います。

    長くなりましたが宜しくお願い致します。

    BizVektorバージョン: 1.9.12

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • CG

    (@du-bist-der-lenz)

    パブリサイズ共有は使わないのですね

    トピック投稿者 luvjapan

    (@luvjapan)

    jetpackのパブリサイズ共有のことでしょうか?
    共有はNext Scripts: Social Networks Auto Posterを使用しております。

    トピック投稿者 luvjapan

    (@luvjapan)

    言葉が足らなかったです。

    BizVektorテーマオプションにSNS連携という項目があり

    設定項目がいくつかあるのですがfacebookコメント欄をシングルページに表示するかしないかの設定で

    BizVektorでもとから用意されているトップページ,固定ページ,投稿ページ,お知らせ投稿ページにはfacebookコメント欄を表示&非表示の設定が出来ます。

    このBizVektorテーマオプションのSNS連携という項目に表示されるトップページ,固定ページ,投稿ページ,お知らせ投稿ページの4項目に加えて自分で用意したカスタム投稿タイプを自動で作成する度に追加されれば便利なのですが今のところ

    カスタム投稿タイプ追加する度にコードを追記している状況です。

    記事の共有はNext Scripts: Social Networks Auto Posterにておこなっております。

    CG

    (@du-bist-der-lenz)

    Jetpackのパブリサイズ共有でカスタム投稿タイプからの連携とシェアボタンの表示も設定しています。

    Jetpackのパブリサイズ共有を使って、商品ページやプロジェクトページにもシェアボタンを設置できる。

    CG

    (@du-bist-der-lenz)

    テーマのコメントテンプレートに、SNSのコメントフォームを入れることで、カスタム投稿タイプのテンプレートは手間が省けませんか。

    こんにちは

    書かれているコードを詳細に読めていないので分かりませんが、後者のコードの
    get_post_type() == 'news'

    in_array( get_post_type(), get_post_types() )
    みたいにすれば、全てのpost_typeになると思います。
    (※一度も実行していないので、参考程度にご利用ください)

    子テーマに記述しているのであれば、BizVektorのバージョンアップごとに修正の必要はないように思いますが・・・

    でも、single-〇〇.phpをするのであれば、テンプレートにタグをそのまま書く・・・のではだめなのですかね。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    BizVektorですが、公式ディレクトリの「BizVektor Global Edition」ではなくてBizVektorのサイトから入手できるフル版で間違いないですよね。

    公式のフォーラムもあるのでもし解決できなければそちらでも聞いていただくとして、とりあえず現時点で分かる範囲で確認しました。

    まず

    以下のコードをfunctions.phpに追記しsns.phpを子テーマに移動して書き換え

    とのことですが、子テーマのfunctions.phpの場合は他のテンプレートファイルと違ってオーバーライドできないのですが(※)、BizVektor側でif ( ! function_exists( 'biz_vektor_fbComments' ) )的な処理がないですし、そのまま同じ関数をコピーして処理するのは少々厳しかろうと思います。
    なので、BizVektorで元々用意されていない自作の投稿タイプ向けに、別の関数を自作するのが無難かと思います。

    ※子テーマ – WordPress Codex 日本語版
    https://wpdocs.osdn.jp/%E5%AD%90%E3%83%86%E3%83%BC%E3%83%9E

    style.cssと異なり、子テーマの functions.php は、親テーマの機能を上書きしません。代わりに 親の functions.php に追加して読み込まれます。(正確には、親テーマのファイルの 直前 に読み込まれます。)

    既存の投稿タイプでは
    <?php do_action('biz_vektor_fbComments'); ?>
    で表示できるのになぜ自分で追加した投稿タイプではdo_actionが聞かないのか?ということですが、biz_vektor_fbComments関数側で「facebookコメント欄を表示するよう設定した投稿タイプかどうか」という判定を行っているためです。

    munyaguさんのアドバイスにある

    後者のコードの
    get_post_type() == 'news'

    in_array( get_post_type(), get_post_types() )
    みたいにすれば、全てのpost_typeになると思います。

    についてですが、このケースではそのあとに続く isset($options['fbCommentsPost']) && $options['fbCommentsPost'] の判定があるのですが、自作の投稿タイプはこのオプション項目がないため、常に空になってしまい判定漏れして上手くいかないと思います。

    あと、おそらくですが、facebookコメント欄を表示させる設定があるかどうかで、SDKを読み込むかどうかも判定しているかもしれないので、そのあたりの関数も追ってみないといけません。

    いずれせよ、BizVektor本体の関数をちゃんと追って、自分で関数をがっつり作るカスタマイズにはなってしまいそうな雰囲気です。

    ちなみにBizVektorは、作者さんがけっこう悩みながらも頻繁に機能拡張をしていますので、今後のバージョンアップにちゃんと乗っかりたいなら、BizVektorの機能を使わずにコメント欄を設置したほうが安全かな、と個人的には思います。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「BizVektorテーマオプションのSNS連携をカスタム投稿タイプでも可能にしたいです。」には新たに返信することはできません。