Push7ボタンのリンク先が空になる

Simplicityの特徴 フォーラム Simplicity2に関する話題何でも Push7ボタンのリンク先が空になる

47件の返信スレッドを表示中
  • 投稿者
    投稿
    • #38666
      まさひこ
      ゲスト

      2.1.3でPush7ボタンを設置したのですが、ボタンのリンク先が空になってしまいます。
      例えば具体的には下記URLの記事のようにボタンは設置できるのですが、ボタンを押しても登録できません。
      ソースを見るとボタンのリンク先が”//”になっています。
      http://masalog.net/how-to-write-book-review.html

      APPNOを確認して入力し直したり、キャッシュの削除も行いましたが状態が変わりません。
      原因として何が考えられるでしょうか。

    • #38720
      アバター画像わいひら
      キーマスター

      以下のURLのAPPNOをまさひこさんのものに変更してアクセスすると、どのような値が返りますか?
      https://api.push7.jp/api/v1/APPNO/head
      返ってきた値を全てコピペして貼り付けてみてください。

      ちなみに当サイトのものはこんな感じになります。
      {"alias":null,"domain":"simplicity.app.push7.jp","icon":"https://dashboard.push7.jp/uploads/0d99429663304022937676faed1e8b18.png","name":"Simplicity","subscribers":32,"url":"http://wp-simplicity.com/"}

    • #38739
      まさひこ
      ゲスト

      コメントありがとうございます。

      以下の値が返ってきます。

      {"alias":"push.masalog.net","domain":"masalog.app.push7.jp","icon":"https://dashboard.push7.jp/uploads/a8c48d90c6994f80a96984c6b449c4ba.png","name":"MasaLog","subscribers":1,"url":"http://masalog.net"}

      push.masalog.netのサブドメイン設定は済んでいて、Push7サイトで表示されるサンプルボタンは動作します。
      また、子テーマを使っているせいかなと、試しに親テーマで設定してみましたが同じ症状でした。

    • #38781
      まさひこ
      ゲスト

      私がSNS Count cacheを利用しているのが関係しているようです。

      ふと思いついて無効にしてみたところ、空欄で何も表示されなかったPush7の共有数に数字が表示されました。

      ただ、リンク先は相変わらず空です。
      無効なボタンなので一旦配置から外しました

    • #38782
      Hidekichi
      ゲスト

      ボタンを外されたということですが、違うページではまだ見えているのでおそらくキャッシュかと。

      mod_spageSpeedとか。

    • #38797
      アバター画像わいひら
      キーマスター

      Push7は、キャッシュとは関係ないので、SNS Count cacheは、おそらく関係ないと思います。
      当サイトもSNS Count cacheを使用しています。
      hidekichiさんがおっしゃるように、キャッシュの可能性もあると思います。
      以下の対策などを確認してみてください。
      動作不良時のガイドライン

    • #38804
      まさひこ
      ゲスト

      ボタンが見えたのはHidekichiさんにご指摘いただいたタイミングで、いろいろ試してみるのにまたボタンをオンにしていたためだと思います。

      ソースのsns-buttons-balloon.phpを見させていただいてPush7の箇所の条件にscc_exists()を使われていたので関係あるかなと試してみた次第です。

      キャッシュは削除しました。エックスサーバーですがmod_pagespeedはoffです。PC2台とiPhoneで確認しています。

      今は試しにsns count cacheを無効にしてボタンを表示させてみていますが、登録数は見えるのですがリンクが空です。

      うーん。もうちょっといろいろ確認してみます。

    • #38808
      Hidekichi
      ゲスト

      何をされたかわかりませんが今は正常に出てるっぽいですね。

    • #38810
      謝花勇武
      ゲスト

      こんばんは
      実は私も本日Simplicity2.1.3にアップグレードして
      設定したのですが
      リンク先が空欄となっています

      上記のフォーラムで書かれてることすべてやったのですが・・・
      どうもうまくいかず・・・

    • #38811
      アバター画像わいひら
      キーマスター

      一番考えられる原因は、APPNOの設定に失敗していて、APIで値が取得できてないということです。
      それを確かめる手段として、lib/sns.phpにあるfetch_push7_info()関数を以下のものに差し替えて、出力されるテキストを貼り付けてもらってよろしいでしょうか。

      //Push7情報取得
      function fetch_push7_info(){
        $res = 0;
        $app_no = get_push7_follow_app_no();
        if ( $app_no ) {
          $url = 'https://api.push7.jp/api/v1/'.$app_no.'/head';
          $info = wp_remote_get( $url );
          if (!is_wp_error( $info ) && $info["response"]["code"] === 200) {
            $info = json_decode( $info['body'] );
            echo('<pre>');
            var_dump($info);
            echo('</pre>');
            if ( $info ) {
              $res = $info;
            }
          }
        }
        return $res;
      }

      テキストを取得したら、関数は元に戻してください。

    • #38812
      謝花勇武
      ゲスト

      出力されるテキスト
      というのはリンク先でよろしいでしょうか?

      「https:///」

      fetch_push7_info()関数を指示通り変更してでたリンク先は上記の通りです。

    • #38813
      アバター画像わいひら
      キーマスター

      では、こっちの関数で試してみてください。

      //Push7情報取得
      function fetch_push7_info(){
        $res = 0;
        $app_no = get_push7_follow_app_no();
        if ( $app_no ) {
          $url = 'https://api.push7.jp/api/v1/'.$app_no.'/head';
          $info = wp_remote_get( $url );
          echo('<pre>');
          var_dump($info);
          echo('</pre>');
          if (!is_wp_error( $info ) && $info["response"]["code"] === 200) {
            $info = json_decode( $info['body'] );
            if ( $info ) {
              $res = $info;
            }
          }
        }
        return $res;
      }

      それっぽいテキストがでないということは、やはりAPIの取得に失敗しています。

      あと、できれば、不具合ページのURLを掲載していただいてよろしいでしょうか。

    • #38814
      謝花勇武
      ゲスト

      9時25分の投稿通りやってみました
      ギャゾ画像
      https://gyazo.com/7a6c977818231432d3c9f62cf1dea9b9

      各記事ページ上部にあるフォローボタンの部分です
      https://jahanaisamu.com/okinawa-falling-snow/
      すべてのPush7のリンクが表示されません

    • #38815
      アバター画像わいひら
      キーマスター

      ありがとうございます。
      やはり、エラーで取得できていないようです。

      object(WP_Error)#5573 (2) {
        ["errors"]=>
        array(1) {
          ["http_request_failed"]=>
          array(1) {
            [0]=>
            string(146) "SSL certificate problem, verify that the CA cert is OK. Details:
      error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"
          }
        }
        ["error_data"]=>
        array(0) {
        }
      }

      エラーメッセージで以下のようなものが出ています。

      SSL certificate problem, verify that the CA cert is OK. Details:
      error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

      僕は、SSLについては詳しくないのですが、以下の対策などを試してみてください。
      SSL通信時発生する証明書エラーとその仕組みを理解する – Qiita

      これを改善出来たら、もう一度試してみてください。

    • #38816
      謝花勇武
      ゲスト

      ありがとうございます
      確認してみます
      感謝

    • #38824
      まさひこ
      ゲスト

      私もやってみました。謝花勇武さんと同じエラーが出ています。

      object(WP_Error)#5279 (2) {
      [“errors”]=>
      array(1) {
      [“http_request_failed”]=>
      array(1) {
      [0]=>
      string(146) “SSL certificate problem, verify that the CA cert is OK. Details:
      error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”
      }
      }
      [“error_data”]=>
      array(0) {
      }
      }

      SSL関連のページを確認してみます。

    • #38832
      Hidekichi
      ゲスト

      Webプッシュ通知サービス「Push7」がWordPressのカテゴリ別配信へ対応

      ここみたら、画像にsslの検証を無効化するって内容があるので、プラグインからパクって引用して、エラーの時はそちらを使うようにすればいいんじゃないですかね?

      apiの情報がどこにあるのかわかりませんでしたけど、プラグインでできるなら、できるでしょう?ってぐらいの話ですけどね(笑)

    • #38850
      まさひこ
      ゲスト

      Hidekichiさんの書き込みがヒントになって解決できました!

      sns.phpの情報取得箇所を以下のように変更したところ動作するようになりました。

      // $info = wp_remote_get( $url );
      $info = wp_remote_get( $url,
      array(
      ‘sslverify’ => false
      )
      );

      ありがとうございました。

    • #39004
      謝花勇武
      ゲスト

      まさひこさんの投稿を元にsns.php変更したのですが・・・

      で、できない・・・

      //Push7情報取得
      function fetch_push7_info(){
        $res = 0;
        $app_no = get_push7_follow_app_no();
        if ( $app_no ) {
          $url = 'https://api.push7.jp/api/v1/'.$app_no.'/head';
          $info = wp_remote_get( $url,
          array(
          ‘sslverify’ => false
          )
          );
          if (!is_wp_error( $info ) && $info["response"]["code"] === 200) {
            $info = json_decode( $info['body'] );
            if ( $info ) {
              $res = $info;
            }
          }
        }
        return $res;
      }
    • #39005
      Hidekichi
      ゲスト

      apiからレスポンスはちゃんと返ってきているようなので、単純にリンクが作れていないだけのようです。
      どこで設定しているか等をまだ見てないので、夜にでも見てみます。

    • #39006
      謝花勇武
      ゲスト

      Hidekichiさん
      ありがとうございます。
      お力貸してください

    • #39012
      Hidekichi
      ゲスト

      ちょろっと見てみましたが、sns count cacheは利用されていますか?
      もし利用されているようなら、一旦止めて表示してみて下さい。

      値がちゃんと取れているかどうかは、sns-buttons-balloon.php(バルーンタイプの場合)の156行目あたり、コメントで「push7ボタン」とあるphpブロックの中の

      $push7 = fetch_push7_info();

      の後に、
      echo “

      ";
      print_r($push7);
      echo "

      “;
      などと入れて$push7の中身をダンプします。
      fetch_push7_info()はsns.phpの中で定義されていて、wp_remote_get(アドレス)によってpush7のapiにアクセスしそのレスポンスを受け取る関数です。ブラウザ上では、ここは正しくレスポンスされていました。

      もし、上記のダンプで値が取れてない、例えばdomain : push7からのアドレス(jahanaisamu.app.push7.jp)が入っていない場合は、sns.phpあたりがオカシイんですけれども、サーバーのレスポンスはされているためjsonの取り出しに問題がありそうです。
      ダンプして値が取れているにも関わらず、sns-buttons-balloon.phpにてその値が反映しないとなると、

      if ( scc_exists() ) {

      つまり、sns count cacheの値がtrueになっていてキャッシュを読み込んでいるのではなかろうかと思います。もし利用していない、キャッシュはクリアしたにも関わらず表示しない場合は他に原因がありそうです。その他のキャッシュとか。

      ひとまずここらを確認してみて下さい。

    • #39014
      Hidekichi
      ゲスト

      あ、preが…
      コードの部分は、

      echo "<pre>";
      print_r($push7);
      echo "</pre>";

      です。

      • この返信は9年、 6ヶ月前にアバター画像わいひらが編集しました。理由: コード表示の修正
    • #39015
      Hidekichi
      ゲスト

      ぶ(笑)

      echo “[pre]”;
      print_r($push7);
      echo “[/pre]”;

      []は半角〈〉で。

    • #39019
      謝花勇武
      ゲスト

      Hidekichi様

      いろいろとありがとうございます。
      まず「sns count cache」というのはプラグインでしょうか?
      上記のプラグインは使用していません。

      sns-buttons-balloon.phpにて反応するかどうかを確認してみます
      下記のギャゾの通りにやってみます
      https://gyazo.com/5c2489cd66b702dc5125ea6184d82d7f

    • #39020
      謝花勇武
      ゲスト

      コードを位置が間違ってました
      ?>の後に指定されたコードを書きました
      下記の通りに出ました
      https://gyazo.com/de1a7da1a0a4f6ff963a6451b251fe57

    • #39022
      Hidekichi
      ゲスト

      ?>の中に書きます。なので最初ので正解です。

      何か表示されましたか?

    • #39024
      謝花勇武
      ゲスト

      ?>の中に書き込むと
      記事タイトル以降すべてが表示されなくなりました。

      私の行いが悪いからですか・・・

      どうすればよいのでしょうか・・・

    • #39025
      謝花勇武
      ゲスト

      正確に書くと
      記事タイトルは表示されて
      更新日時やカテゴリが表示され
      それから下は真っ白になりました。

    • #39028
      Hidekichi
      ゲスト

      書き方はこんな感じです | jsFiddle

      ※ jsFiddle上でこれを実行しても何も起こりません。
      ※ ソースを表示するためだけに利用してます。

      実際自分のサイト(cloud9上)に導入してみましたが特に問題は起きなかったので、原因が特定しきれませんけれども、上記を試して何かしら表示したのであれば設定は間違ってないのではなかろうかと思います。

    • #39029
      謝花勇武
      ゲスト

      ご丁寧にありがとうございます
      指示通り
      sns-buttons-balloon.php
      の指定場所にコードを書き込みました

      https://gyazo.com/fdfab9f8823afc60a84f22fa75c3f49d

      現在そのままにしています

    • #39030
      謝花勇武
      ゲスト
    • #39034
      Hidekichi
      ゲスト

      0しか出てこないのはオカシイです。


      必要なのはこの中のbodyの部分です。

      よってsns.phpをちょっと見なおしてみて下さい。

      まず今入れた、preの部分を取り除き、sns.phpのpush7該当部分をコピペして、上記の画像のような感じの表示が出るかを確かめて下さい。
      謝花勇武さんのサイトはhttpsなので、まさひこさんのようにsslverifyを入れる必要はないかと思うんですが(うちは上記のようにして問題なく取得できています)、もしかしたらサーバー等の仕様によって必要なのかも知れないので念の為コメントアウトしてあります。
      何も表示されない場合は、コメントアウトを取り除いてみて下さい。

      まずこの状態でどういった内容が返ってきているかを確認してみて下さい。
      エラーがでていなければ、ブラウザ上にpreのブロックが作られその返ってきた内容が表示されると思います。サンプルでは、もしエラーがない場合にpreの中身が表示されます。ここに何かしらエラーがあれば、responseの部分が200ok以外で返ってくるかと思います。もし200okであればapiからのレスポンスは正しいということになります。

      if (!is_wp_error( $info ) && $info[“response”][“code”] === 200) {
      $info = json_decode( $info[‘body’] );
      if ( $info ) {
      $res = $info;
      }
      }

      この部分ではエラーがないときに、レスポンスはjsonで返ってきてるのでそのbodyから、json_decodeをして$infoに入れてます。これが本来返るはずなんです。その中にアドレスであったりidであったりが含まれています。

    • #39052
      謝花勇武
      ゲスト

      こんにちは
      Hidekichi様
      お返事ありがとうございます
      本当に感謝です

      上記のコードを追加してアップロードしてみました

      追加して編集したテキストがこちらです
      ギャゾ
      https://gyazo.com/35651358dc7c345e110472c673069662

      そして結果として出たのが
      真っ白になりました

      ギャゾ
      https://gyazo.com/493b7f43fdaf77e68d239a3d57d77cae

      すべての設定から間違ってるのでしょうか?
      何度も何度もすみません

    • #39056
      Hidekichi
      ゲスト

      ええと、入れるファイルが間違ってます。

      sns.phpにecho部分を入れて、何が返ってきているかを見るスクリプトです。

      >> まず今入れた、preの部分を取り除き
      これは、この前のレスで入れたecho preの部分を指してます。

      で、sns.phpのpush7部分の該当関数部分(function fetch_push7_info())を探します。追加してあるのは、echo pre〜preint_r〜echo preだけです。一部修正してあるのは、まさひこさん案のsslのベリファイを回避するものですが、まさひこさんのサイトはhttpのサイトで謝花勇武さんのサイトはhttpsなので不要かと思いコメントアウトしています。

      わかりやすいようにコメント入れました

      上記のサンプルで、sns.phpの該当関数部分の内容を一部書き換え、echoあたりを追記します。
      これができたら、僕がレスした画像のようなものが出てくるはずですが、そこらを確認していただきたい感じです。

    • #39059
      Hidekichi
      ゲスト

      動作説明をしますと、push7のapiにアクセスしているのはsns.phpの「function fetch_push7_info()」こやつです。これがpush7のapiにアクセスして、アドレスやら購読数をjsonで返してきます。

      sns-button-balloon.phpはボタンのhtmlです。単純にスピナーがクルクル回っているボタンを表示しています。

      apiから返ってきた購読数を書き換えているのはjavascript.jsの部分で、スピナーがクルクル回っている箇所を購読数で書き換えます。← ここは動作している模様?(※)

      ※動作して0になっているのは、javascript.jsが正しく動作しているという意味です。値が正しいかは別問題です

      リンク先となるpush7のアドレスはsns-button-balloon.phpの$push7 = fetch_push7_info();だったかで取得しています。つまりsns.phpのfunction fetch_push7_info();が機能していれば取得できるはずなのです。

      function fetch_push7_info();は、apiにアクセスし、その値をjsonで返してきています。wp_remote_getで値が拾えていれば(これは拾えていると思います)、それをjson_decodeで変数に直しています。
      $push7 = fetch_push7_info();ですから、変数が$push7には入っており、$push7->domainでアドレスが取得できるはずなのですが…。

      今回追加したecho部分は、apiから値が取れているかを確認するものです。
      表示された値の中の[body]の中に必要なjsonが入っていれば、次に確認するのはデコードできているかです。

      サンプルの中に、$info = json_decode( $info[‘body’] );という部分があります。
      これがデコードしているところですが、この後にecho pre の後のprint_r()に$infoを入れて、どういう値が入っているかを確認します。もしこれがどうもオカシイということになれば、

      $info = json_decode( $info[‘body’], true );

      と書き換えます。そうすると、json_decodeは連想配列に変えますから、それで値にアクセスできるか確認します。それでも何かおかしいという場合はsns-button-ballon.phpの$push7->domain等を、$push7[‘domain’]としたらアクセスできるんじゃなかろうかと。試してないのでわかりませんが(笑)

    • #39062
      謝花勇武
      ゲスト

      大変申しわけないです
      sns.php

      レス番号39056の
      https://jsfiddle.net/70pq42rz/2/
      のように変更しました

      結果は下記の画像です
      https://gyazo.com/329386722d7bafb79aceaae62c5cd1a1

      全文はこちらです
      https://gyazo.com/1576a7116cd73f28c466d7329befbd0d

      エラーですかね・・・

    • #39064
      Hidekichi
      ゲスト

      だったらサンプルのコメントアウトしてあるsslのベリファイを有効にしてみてはどうでしょうか?

    • #39069
      謝花勇武
      ゲスト

      返信ありがとうございます

      早速試してみました

      まず変更箇所の画像です
      https://gyazo.com/ddb905e07ed5506868f2039dd32b51c4

      アップロードしてブログ記事で表示された様子です
      https://gyazo.com/43b422d4efed0a41441df4675e04ba6e

      その表示された全文です
      https://gyazo.com/5e8c1b5e9d6828e6a0b54c029dc795c7

      その際きちんとリンク先が設定されていました

      徐々に解明されつつあります。
      ・・・俺はあまりわかっていないんですが・・・笑

    • #39075
      Hidekichi
      ゲスト

      となると、これでapiのレスポンスは受けられているので、表示されないわけはないんですが、#39059のレスの最後の方に書いたjson_decodeのあたりは試されましたか?

      やり方は同様に、echo pre 〜 print_r() 〜 echo /preを今度は$info = json_decode()の後に入れて、print_rのカッコ内を$infoにします。
      これでjsonをデコードされている内容を見ます。

      php json_decode()

      phpはオンラインマニュアルがきちんとあって、その使い方の例もあるので、どうなって値が拾えるかをこの際覚えて下さい(笑)

      このjsonデコードが正しく動作していれば値が拾えないことはないんですが、例えばphpのバージョンやサーバーの仕様でsimplicityの記述では値が取り出せないという場合があるかも知れません。また一部のjsonを正しく吐き出せない時もあります(jsonの書き方の問題等)。

      そこで#39059のレスで書いたように、jsonデコードの第2引数にtrueを入れます。そうすると連想配列で返すんです。phpマニュアルへのリンクの例1にある、出力の2つ目ですね。1つ目はオブジェクトで返していますが2つ目はarrayで返してますよね。arrayなんてのはどの言語にもありますから拾えないわけがないって感じの配列です。

      このようにしてtrueを入れて配列で返してきているなら、sns-button-balloon.phpのpush7のリンクにある、「->」の部分、例えば$push7->domainなどを配列の$push7[‘domain’]などとして書きなおせば拾えるんじゃなかろうかと思います。

      こうする前に$infoの値をダンプしてきちんとapiのレスポンスの「body」がオブジェクトに展開できているかを確認する必要があります。でオカシイと思ったらjson_decode(値,true)として配列で書き出し、それをダンプします。ここが問題なければsns-button-balloon.phpでも値が正しく取れるはずです。

    • #39077
      謝花勇武
      ゲスト

      Hidekichi様

      本当にありがとうございます
      レス39075は英語で書かれてるのですか?笑
      まったく意味がわかりません・・・。
      ですが頑張ってみます
      もう少しお付き合いくださいませ

    • #39080
      謝花勇武
      ゲスト

      コードを編集して行ったのですが
      なんの変化もありませんでした。
      trueも付け加えましたがなんの変化もありませんでした。
      https://gyazo.com/b79968ace73ec95272b5ebb92739db13

      ボタンも「https:///」のままです。
      何度も何度もすみません

    • #39081
      Hidekichi
      ゲスト

      となると、json_decode自体が使えないのかも知れないと思えてくるわけですが、サーバーのPHPバージョンはいくつですか?
      PHP5.2からしかjson_decodeは使えません。

    • #39083
      Hidekichi
      ゲスト

      ちなみに
      fetch_push7_info() {
      echo “[pre]” . phpversion() . “[/pre]”;
      //その他の記述 略
      }
      ※ []は半角〈〉で書き換えて下さい。

      こう書けば、例えば、5.6とかと表示されるはずです。

    • #39084
      謝花勇武
      ゲスト

      Xサーバーで調べてみました
      https://gyazo.com/833c6661f24bce7bd32e81b82722836c
      PHP5.3.3のようです。
      PHP5.6.18にバージョンアップした方がいいですか?

    • #39086
      Hidekichi
      ゲスト

      したほうが良いです。

      もしjsonのデコードに失敗しているとすれば、

      $error = json_last_error();
      echo “[pre]”;
      print_r($error);
      echo “[/pre]”;

      $info =json_decode();
      の後に追記して、どんなエラーかを調べることもできます。

    • #39087
      謝花勇武
      ゲスト

      解決・・・。
      PHP5.6.18
      にアップグレードして
      すべてのコードを戻したら
      すべて正常に動きました

      はぁ・・・

      なんてこった・・・

      こんなにも時間をとらせてしまい申しわけございません

      そして心からありがとうございます

      何とお礼を申し上げていいのか・・・

      本当に本当にありがとうございます

    • #39126
      アバター画像わいひら
      キーマスター

      Simplicity2.1.4で#38850に書かれていた切り替えを、テーマカスタマイザーのSNS項目(一番下)でできるように一応しておきました

47件の返信スレッドを表示中
  • トピック「Push7ボタンのリンク先が空になる」には新しい返信をつけることはできません。
スポンサーリンク
アドセンス(大)
アドセンス(大)