月別アーカイブ: 2014年2月

WordTwitでアカウントの追加ができない

WordPressで投稿時に自動でTweetしたくて、WordTwitをインストール。
バージョン 3.5.1がインストールされました。

コンシュマーキーとシークレットを設定して、アカウントの追加をしようとしても何も起こらない。
プラグインのソースを読みまくること小一時間。
デバッグ出力のフラグを見つけ、ログを見てみたところ、認証エラーになっていることがわかる。

  1392128986 ..using WP transport
  1392128987 ..WP transport returned a status code of 401
  1392128987 ..RESPONSE was Array
(
    [code] => 401
    [message] => Unauthorized
)

ググってみるとTwitterアプリケーション側でcallback urlが設定されていないかららしい。
Twitter Developerに戻って、Webサイトと同じURLを設定してみる。
出来た!

ちなみに、WordTwitのデバッグ出力フラグは、
/wp/wp-content/plugins/wordtwit/include/classes/debug.php の最後の行に以下のように追加した。
設定ファイルに記載があってもよさそうな物だけど、、、

global $wordtwit_debug;
$wordtwit_debug = new WordTwitDebug;
$wordtwit_debug->enable(true);

ログは、/wp/wp-content/plugins/wordtwit/debug.txt にはかれます。

wordpressのインデックステンプレートにソーシャルボタンを追加

各記事ページに設置するのは、プラグインで簡単にできますが、インデックステンプレートに設置できるものは見つからなかったので、自力で設置しました。
Facebookいいね!、Twitter、はてぶ、g+です。
mixiチェックは、パートナー登録が必要だったので、未確認。
Facebookのapp_idは、facebook developersで取得して、書き換えてください。

メインインデックスのテンプレート (index.php)
まずは、the_content()の下に以下のように設置。

<?php the_content(); ?>
<iframe src="//www.facebook.com/plugins/like.php?app_id=(app_id)&amp;href=<?php the_permalink(); ?>&amp;send=false&amp;layout=button_count&amp;width=120&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:120px; height:21px;" allowTransparency="true"></iframe>

<a href="https://twitter.com/share" class="twitter-share-button" data-text="<?php the_title(); ?> | <?php bloginfo('name'); ?>" data-url="<?php the_permalink(); ?>" data-lang="jp">Tweet</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<!--
<a href="http://static.mixi.jp/share.pl" class="mixi-check-button" data-button="button-1" data-key="(data-key)" data-url="<?php the_permalink(); ?>" data-show-count="yes">チェック</a><script type="text/javascript" src="http://static.mixi.jp/js/share.js"></script>
-->
<a href="http://b.hatena.ne.jp/entry/<?php the_permalink(); ?>" data-hatena-bookmark-title="<?php the_title(); ?> | <?php bloginfo('name'); ?>" class="hatena-bookmark-button" data-hatena-bookmark-layout="standard-balloon" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
<div class="g-plusone" data-href="<?php the_permalink(); ?>" data-annotation="inline" data-width="250"></div>

次に、get_footerの前に以下のように設置。

<script type="text/javascript">
  window.___gcfg = {lang: 'ja'};

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/platform.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>

<?php get_footer(); ?>

[IE7]javascript で select の値がとれない(options.[xxxx].value)

IE7で動作検証したところ動かないところを発見。
javascript内で、selectの値がとれない

var obj_limit = document.getElementById("limit");
var index = obj_limit.selectedIndex;
var limit = obj_limit.options[index].value;

原因は、optionタグにvalueを書いていないからでした。
修正前

<select name="limit" id="limit" onchange="javascript:change_limit(this)">
    <option >10</option>
    <option >50</option>
    <option >100</option>
</select>件表示

修正後

<select name="limit" id="limit" onchange="javascript:change_limit(this)">
    <option value="10" >10</option>
    <option value="50" >50</option>
    <option value="100" >100</option>
</select>件表示

ほんとIEは消えて欲しい。