Simplicityの特徴 › フォーラム › 不具合報告 › feedlyの購読者数がリセットされてしまった
-
投稿者投稿
-
-
2015年5月9日 10:10 PM #26523
okkiisane
ゲストお世話になっています。
先日、Sinplicity1.6.3から1.6.4にアップデートしたのと同じタイミングでfeedlyの高読者数がリセットされたような状態になってしまいました。
正確には、記事中に自分で貼っている公式購読ボタンからはこれまでの購読者数で表示されるのですが、Simplicityで表示してくれる投稿上下のボタンや、このブログをフォローするのボタンから飛ぶと少ない購読者数が表示されてしまいます。
リンク先URLを確認すると、
公式ツールで作成した前者が
http://cloud.feedly.com/#subscription%2Ffeed%2Fhttp%3A%2F%2Fsn9-blog.okinawa%2Ffeed%2F
Simplicityで作成の後者が
http://feedly.com/index.html#subscription%2Ffeed%2Fhttp://sn9-blog.okinawa/feed/
となっており、元は同じサイトなのにURLエンコードされているか否かでfeedlyでは別々のサイトと判断されているようです。一度、Simplicityのテーマ編集で「sns-buttons-***.php」に含まれている【<?php urlencode(bloginfo(‘rss2_url’)); ?>】の部分を全て【http%3A%2F%2Fsn9-blog.okinawa%2Ffeed%2F】に書き換える事で以前と同じ購読者数を表示できたのですが、この方法だとマルチサイト化しサブドメインでSimplicityを使っているブログでも登録先が同じようになってしまうためどうしたらいいものか困っています。
他の方からの報告が無いので、これがSimplicityに依存する問題ではないのかもしれませんが、大した購読者数ではないとは言っても折角登録して頂いた方の数がモチベーションを保つ一つの要素だったので、何かアドバイスを頂けるとうれしいです。
-
2015年5月9日 11:01 PM #26529
わいひらキーマスターSinplicity1.6.3から1.6.4の変更で、feedly関係は変更していないので、そのようになることはちょっと考えにくいです。
1.6.6では変更しましたが、当サイトのfeedly購読者数も問題なく以前の購読者数が表示されています。上記の2つ貼ってあるリンクは両方とも、購読者数が同じ1になっているようなので、本来の数字が表示されるリンクはないでしょうか?
-
2015年5月9日 11:44 PM #26531
okkiisane
ゲストさっそく回答ありがとうございます。
リンク先が同じ結果になってて失礼しました(汗)
こちらが以前の登録リンクで、現時点での購読者数は22です。
https://feedly.com/i/subscription/feed/http://sn9-blog.okinawa/feed -
2015年5月9日 11:50 PM #26533
okkiisane
ゲスト連投すみません(^_^;)
先ほどのリンクを見て、URLスキームかは関係ないかもと思い少しURLを弄っていたら
購読者数22がこちら
https://feedly.com/i/subscription/feed/http://sn9-blog.okinawa/feed
購読者数1がこちら
https://feedly.com/i/subscription/feed/http://sn9-blog.okinawa/feed/となっていました。最後のスラッシュの有無で変わってしまうようです。
-
2015年5月10日 12:02 AM #26534
わいひらキーマスターそうなんです。スラッシュ1つで変わってしまいます。
公式のfeedly登録時にスラッシュのないもので登録すると、そのようになってしまいます。
Simplicityは、Wordpress公式が吐き出すフィードURLを使用しているので、スラッシュを含んだものになってしまいます。解決策として、テンプレートで
bloginfo(‘rss2_url’)が吐き出すURLの最後の/を取り除くよう、PHP関数で置換してやれば良いのではないかと思います。 -
2015年5月10日 12:54 AM #26536
okkiisane
ゲストそうだったんですねorz
取得URLの部分を弄らずしてSimplicityで作成されるボタンでも最近まで問題なく表示されていたのが不思議だったのかもしれません。(Yahoo Pipesが関係有るのかな?)解決策として、テンプレートでbloginfo(‘rss2_url’)が吐き出すURLの最後の/を取り除くよう、PHP関数で置換してやれば良いのではないかと思います。
PHPなどのド初心者で何も分からないのですが、各「sns-buttons-***.php」ファイル内に、
//str_replace (“検索文字列”, “置換え文字列”, “対象文字列”);
$str = “http://sn9-blog.okinawa/feed/”;
$str = str_replace(“/feed/”, “/feed”, $str);
echo $str;と記載したらいいのでしょうか?
-
2015年5月10日 12:33 PM #26544
hidekichi
ゲストbloginfoのrss2_urlの最後はスラッシュは入ってないと思うんですけれども、どうでしょう?
試しに、header.phpあたりのbodyの下に、
<?php echo bloginfo('rss2_url'); ?>とでも入れて確かめてみてはいかがですか?
記事タイトル上あたりにアドレスが出ると思います。 -
2015年5月10日 2:36 PM #26548
わいひらキーマスター動作確認はしていないですが、str_replaceを使うなら、以下のようにするといけるのではないかと思います。
str_replace(“/feed/”, “/feed”, bloginfo('rss2_url'));もしうまくいかなかったまた書き込んでいただけると、こちらでも試してみます。
>hidekichiさん
僕のローカル環境で試すと/が入るようです。
/が入るのと入らない違いは、何かの設定の違いなんでしょうかね。 -
2015年5月10日 4:46 PM #26550
hidekichi
ゲスト>わいひらさん
最後のスラッシュはトレイリングスラッシュと言いまして、apacheのmod_dirの設定で変わったりします。
ディレクトリの場合は必ずスラッシュで終わる必要があって、
http://wp-simplicity.com/suport にアクセスがあった場合、
http://wp-simplicity.com/suport/ 最後にスラッシュを付けてリダイレクトするのが普通の挙動です。
そしてindex.htmlやらindex.phpやらを探すわけです。
最初からファイルとして書いておけば、ファイルがない場合はスラッシュを付けてディレクトリとしてindex.phpとかないかなと探してみると言う動作でしょうか。それもない場合は404とか。うちのサーバーはおそらくmod_dirがmod_rewriteとあまり相性が良くないと言う点からmod_dirを無効にしているか、あるいはhtaccessで使用できないコマンドがあるため、また共用サーバーでmod_rewriteでパスが書き変えられた後リダイレクトされるとマズイ等の関係でoffにしているのかもしれません(理由は不明。
ファイルへのアクセスならいいんですけどもディレクトリの場合はリダイレクトされるという所で色々考えさせられる設定みたいです。結果的に、最後のスラッシュはあってもなくても必要であれば勝手にサーバーがくっつけるものなので、もし表示されているようであればリネームするしかないのかもしれません。リネームせずとも、wordpressのアドレス+feedでも良いように思いますけれども、ここらは環境次第というところでしょうか。
僕の経験からすると、最後にスラッシュを入れるサーバーはあまり見たことが無かったり。ただ今まで気にしたことがなかっただけでつけていたかも知れません。ちなみにwordpressは全ての環境で正しく動いており、同じように動作しない問題なのはサーバー設定という所です。ここらの違いで結果が違ってきたりすると思われます。
またパーマリンクの設定でも異なります。
http://wp-simplicity.com/suport/?page=100/
とかオカシイですからね。どんなディレクリやねんってことになります。基本、デフォルトの場合は最後のスラッシュをrtrimとかで取り除いてるかも。試してませんが 参考: Remove trailing slash
意味合い的には若干違いますが、最後のスラッシュを取り除きたい、付けたいという記事はたくさんあるようです。
例: http://www.abc.com/test.php -> http://www.abc.com/test/ でphpが動作するようにしたいなど。 -
2015年5月11日 3:22 AM #26557
okkiisane
ゲストわいひらさん、hidekichiさん
アドバイスありがとうございます。PHPのPの字も知らないのですが、これを機会に少しは勉強しようと色々調べて、わいひらさんのこの記事とウェブで見つけたこちらの記事から、(wp-includes/fanction.php)に「/feed/ → /feed」へ置換の命令を、(wp-includes/canonical.php)に自動的にトレイリングスラッシュを付ける標準の仕様をリクエストしたURLのままにするための命令を加えることで解決出来るかもしれないと思ったのですが、
コードを書いたこともなく作法(文法など)も分かっていない私が見よう見まねで書いた下のコードでは【Parse error: syntax error, unexpected ‘]’ in ファイル名+行目】というメッセージが出てしまいました(/_;)
function str_replace() { str_replace('/feed/', '/feed', bloginfo('rss2_url')); ] return bloginfo('rss2_url'); ]試したのは、wp-includes下のfunction.phpだったのですが、Simplicity親テーマ内またはSimplicity子テーマ内のfunction.phpへの変更がいいのかも合わせて教えて頂けるでしょうか?
-
2015年5月11日 11:04 AM #26558
hidekichi
ゲスト>okkiisaneさん
たぶん、str_replaceはphpのコマンドであるので、違う名称のほうが良いかと思います。
例えば、最後のスラッシュを取るので、remove_trailingslash()とか。
またwordpressは最後のスラッシュを取る関数が用意されています(wp-includes/formatting.php内untrailingslashit関数)。$feed_address = bloginfo("rss2_url"); $remove_trailingslash = untrailingslashit($feed_address);最後にスラッシュが入るかどうかはサーバーの環境次第なので、誰にでも当てはまるやり方ではありませんが、最後にスラッシュが入り、その部分だけなんとかしたい場合は上記でイケルのではないかと思います(試してません(笑)。
誰にでも合うようにするためには、最後にスラッシュが入っているかどうかを正規表現やstrrposとかその他諸々でチェックして、かつ該当する部分だけ適用させないといけないので(全体に適用するとサーバーの設定的にややこしくなるので)、使いたいところだけうまく使えるようにする必要があります。
またfeedlyはurlencodeも必要でしょうから、
$encode_feedAddress = urlencode($remove_trailingslash);
も追記する必要があるでしょうか。例えば、
$feedAddress = bloginfo(home_url()) + "/feed";とかでも良いのかなぁと思ったり。home_url()にスラッシュがついてくるなら、+”feed”で。
関数化するなら、function feedlyAddress(){ $feed_address = bloginfo("rss2_url"); // ここらで最後にスラッシュがあるかどうかを調べられると汎用的になる // 例えばfeed/があるかどうかでいいので、strposとかも良いかも。 $remove_trailingslash = untrailingslashit($feed_address); //$encode_feedAddress = urlencode($remove_trailingslash); //エンコードが必要であれば return $remove_trailingslash; // or $encode_feedAddress /*もしくは、*/ // $url = bloginfo(home_url()) + "/feed"; // スラッシュがドメインに入ってくる場合は + "feed"とか // $encode_feedAddress = urlencode($url); //エンコードが必要であれば // return $encode_feedAddress; // など }これを子テーマfunctions.phpに書いておいて、feedのアドレスが必要な時はfeedlyAddress()で呼び出せばよいのではないかと思います。ん、function内でbloginfoが効くだろうか…。効かない場合はこのレス一番下に対処法を。
また関数名を何かしらよい感じのに変更して、引数に($mode)とかを入れておき、エンコードするしないを設定したりもできます。function something($mode){ if ($mode === "enc"){ // 最終的にエンコードする処理 $needUrl = xxxx.xxx; } else { // それ以外はスラッシュだけを取り除いたそのままのアドレス $needUrl = zzzz.zzz; } return $needUrl; }たくさんのモードを付けたい場合はswitchでの条件分岐が便利ですが、switchは === ではなく == でチェックしているので注意が必要です。 === は型までチェックします。
function something($mode){ switch($mode) { case "enc": //エンコードの処理; $needUrl = xxx.xxx; break; case default: // 上記caseに当てはまらない時はエンコードせず; $needUrl = zzz.zzz; } return $needUrl; }など。
関数内でbloginfoが効かない時は引数でアドレスを渡せばよいのではないかと思ったり。
function feedlyAddress($url){ //$urlに対して何かしらの処理 return 処理したアドレスを返す }など。方法は色々ありそうです。
-
2015年5月11日 6:11 PM #26565
-
2015年5月11日 9:09 PM #26574
hidekichi
ゲスト$feedAddress = bloginfo(home_url()) + "/feed";これ間違ってました。+連結はjQueryでした(笑)
$feedAddress = bloginfo(home_url()) . "/feed";こんな感じでピリオドでつなぎます。
-
2015年5月12日 4:41 PM #26598
okkiisane
ゲストわいひらさん、hidekichiさん
再度のアドバイスありがとうございますm(__)mわいひらさんからのアドバイスを元に関係するテンプレートを子テーマにコピーして変更しました。
記事の上下に表示させているSNSシェアボタンのfeedlyアイコンのリンク先については、
・sns-buttons-balloon.php
・sns-buttons-icon.php
・sns-buttons-defolt
内の
<?php urlencode(bloginfo('rss2_url')); ?>を
<?php echo home_url('/feed'); ?>に置換し、
PC版のブログ右上や記事下に表示されるフォローボタンのfeedlyアイコンのリンク先については、
・sns-pages.php
内の
<?php echo rawurlencode(get_bloginfo("rss2_url")); ?>を
<?php echo home_url('/feed'); ?>に置換する事で変更可能でした。RSSアイコンのリンク先の合わせて変更したかったので、
・sns-pages.php
内の
<?php bloginfo('rss2_url'); ?>を
<?php echo home_url('/feed'); ?>に置換しました。
また、WordPressでは自動的にトレイディングスラッシュが付くため子テーマ内のfunctions.phpに、function mytheme_redirect_canonical( $redirect_url, $requested_url ) { return $requested_url; } add_filter( 'redirect_canonical', 'mytheme_redirect_canonical', 10, 2 );を追記して、リクエストしたURLでそのまま表示する様に変更しました。
以上の変更で、feedly登録時のURLをhttp://sn9-blog.okinawa/feedにする事が出来たのですが、
購読者数についてはSimplicityのコマンド(get_feedly_count())を使用しているので、/feed/の値が表示されてしまいます。//feedlyの購読者数取得 function get_feedly_count(){ $feed_url = rawurlencode( get_bloginfo( 'rss2_url' ) ); $res = '0'; $subscribers = wp_remote_get( "http://cloud.feedly.com/v3/feeds/feed%2F$feed_url" ); if (!is_wp_error( $subscribers ) && $subscribers["response"]["code"] === 200) { $subscribers = json_decode( $subscribers['body'] ); if ( $subscribers ) { $subscribers = $subscribers->subscribers; set_transient( 'feedly_subscribers', $subscribers, 60 * 60 * 12 ); $res = ($subscribers ? $subscribers : '0'); } } return $res; }このどの部分を変更すればいいのでしょうか?
また、子テーマのfunctions.php内にこのコマンドをコピーし変更したいのですが、そのままだと親テーマのfunctionsファイルととぶつかってしまうのかエラーになりました。同じコマンドを追記する場合、何か条件を追加する必要があるのでしょうか?そして、ここまでアドバイスを頂いておいて申し訳ないのですが、WordPress自体のbloginfo()で出力されるRSS2.0のURLを変更する方法があれば手順が少なくて済むような気がするのですが、 wp-includes/general-template.phpをイジればどうにかなるでしょうか?
色々と注文ばかりですみません…
-
2015年5月12日 5:43 PM #26601
わいひらキーマスターWordPress自体のbloginfo()で出力されるRSS2.0のURLを変更する方法があれば手順が少なくて済むような気がするのですが
できるのならそれが一番楽かもしれません。
ただ、これまで作るのに、そういったことをする必要がなく、僕はそういった方法を知らないので、調べてみてください。
というか、そもそもfeedlyがスラッシュ付きも、スラッシュなしも同じ物として扱うべきとは思います。wp-includes/general-template.phpをイジればどうにかなるでしょうか?
そういった部分を変更しても良いですが、Wordpressのアップデートで元通りになるのでアップデートごとに修正する必要があります。
get_feedly_count()の対応をするには、子テーマのfunctions.phpに以下のように書いて、
//feedlyの購読者数取得 function get_feedly_count_ex(){ $feed_url = rawurlencode( home_url('/feed') ); $res = '0'; $subscribers = wp_remote_get( "http://cloud.feedly.com/v3/feeds/feed%2F$feed_url" ); if (!is_wp_error( $subscribers ) && $subscribers["response"]["code"] === 200) { $subscribers = json_decode( $subscribers['body'] ); if ( $subscribers ) { $subscribers = $subscribers->subscribers; set_transient( 'feedly_subscribers', $subscribers, 60 * 60 * 12 ); $res = ($subscribers ? $subscribers : '0'); } } return $res; }テンプレートの
get_feedly_count()部分を
get_feedly_count_ex()に変更すればうまくいくのではないかと思います。(動作確認はしていません。) -
2015年5月12日 6:44 PM #26605
okkiisane
ゲストさっそくの回答ありがとうございます!
アドバイスして頂いたget_feedly_count_ex()の方法で解決しました(*^_^*)目的がfeedlyでの購読者数を以前の表示に戻す(/feed/ → /feedにする)事だったので色々と書き換える必要が出たのですが、改めて考えるとまだまだ購読者数は多くはないですしブログ記事で購読者に改めて登録してもらうようお願いした方がいいのかも知れないと思えてきました(^_^;)
WordPressの本来の仕様に則った方が今後も使いやすく、管理が楽なので長い目で見ればメリット多いですよね。
そもそもfeedlyがスラッシュ付きも、スラッシュなしも同じ物として扱うべきとは思います。
そうですよね。英語が判れば報告してるのになぁと思ったり…
わいひらさん、hidekichiさんお手を煩わせてしまいましたが、今回の件でPHPやWordPressの仕組みなどについて勉強させて頂けて感謝してますm(__)m
購読者数が少ないので今後本来の設定に戻すと思いますが、購読者数がかなり合ったのに私の様な状態に陥っている方の役に立てれば嬉しいので、今回の件は私のブログでまとめたいと思います。
本当にありがとうございました。
-
2015年5月12日 7:17 PM #26607
わいひらキーマスター改めて考えるとまだまだ購読者数は多くはないですしブログ記事で購読者に改めて登録してもらうようお願いした方がいいのかも知れないと思えてきました(^_^;)
WordPressの本来の仕様に則った方が今後も使いやすく、管理が楽なので長い目で見ればメリット多いですよね。
デフォルトで使えば、今後仕様変更の不安はないですけど、feedlyの購読者数22と言えば、結構な数なので悩ましいところですね;
-
-
投稿者投稿
- トピック「feedlyの購読者数がリセットされてしまった」には新しい返信をつけることはできません。