Feedlyに登録しているRSSを、PhoneのSylfeedにて購読していますが、最近、読む時間が捻出できてない状態だったりします。
いろいろとどうするか?という点は置いておき、いままで集めた購読リストも大切なので、これを活用して、ブックマークのように公開するサイトを作りました。
- ものくろのブックマーク | 現在 約700サイト登録 -まだ構築工事中- → http://ohigashi.me/bookmark/
ポイントはこんな感じです。
- WordPressで構築
- カスタムフィールドを活用
- データはCSVで一括登録
- 最新から 10エントリーをRSSから取得して自動で表示
- カスタマイズしやすいので、外観はTwentyFifteenで構築
見切り発車で出来上がったのがこちらです。なんだかんだで695サイト登録していますが、まだまだ登録していきたいです。
それと、カテゴリーの整理とタグの整理ができないないので、ぼちぼちしていきます。これらができていませんが、とりあえず、公開しちゃいました。
RSSフィードのデータ
iPhoneのSylfeedからOPML形式をメール経由にて出力して、MacのOmniOutlinerにインポート、これをHTML形式にてエクスポートして、ブラウザーで表示したのを、コピーして、Excelに貼り付けました。
- OmniOutliner → http://lifehacking.jp/2013/07/edit-opml-with-omnioutliner/
余談ですが、OmniOutlinerからWorkflowyへ貼り付けて整理しようとしたら、無料のリスト数が不足してしまいました。
これで、とりあえずデータは取り出せました。ただ、重複してたりするので、Excelの関数やフィルターを使って簡単に整理を。
参考になったのがこちら。
- 重複しているデータを瞬時に削除する方法 [エクセル(Excel)の使い方] All About → http://allabout.co.jp/gm/gc/376556/
Excelでタグを作ろうとするも、うまくいかない
サイト名の一文字目を取り出して、この「1文字目の音」でタグを作ろうとしましたが、なかなかうまくできませんでした。ということで、タグは後から整理することに。
使ったExcel関数は、こんな感じ。
- LEFT関数
- PHONETIC関数
WordPressサイト構築
さくらインターネットさんのスタンダードにある、ohigashi.meドメインの下に「bookmark」ディレクトリーを作成して、ここにWordPressをインストール、データベースはこれ専用を用意しました。
インストールしたプラグイン
これらをインストール・有効にしました。
- Advanced Custom Fields
- Collapsing Categories
- PS Auto Sitemap
- Really Simple CSV Importer
- WP-RSSImport
- WP Multibyte Patch
カスタムフィールド
Advanced Custom Fieldsプラグインで設定しました。このプラグインは、投稿編集画面の「エディター」部分などを非表示にできたり、とても使いやすいです。
- blog_title
- url
- feed_url
これら3つのカスタムフィールドを用意しました。
参考エントリーはこちら
- 【WordPress】Advanced Custom Fieldsでカスタムフィールドを自在に操る方法 | KLUTCHE → http://klutche.org/archives/1395/
- 私が愛してやまない、Advanced Custom Fields の使い方を詳細解説[ 出力編 ] | MAO PC エンジニア → http://www.mao-engineer.jp/blog/wordpress/1288
*Advanced Custom Fieldsプラグインを使う際の注意点など | notnil creation weblog → http://notnil-creative.com/blog/archives/1752
こちらの書籍も参考になります。
- WordPress Advanced Custom Fields の使い方 | 言い値書店 – 無料で買える電子書籍ストア → http://www.iineshoten.com/book/75/
表示するために、子テーマ「chird15」を作成して、content.phpをカスタマイズしました。カスタマイズしたソースは一番下に添付しています。
カスタムフィールドからエントリータイトルを自動で入れようとするも、うまくできない
カスタムフィールドから「エントリータイトル」を自動で設定するようにしようと、下のエントリーを読み格闘したのですが、どうもうまくできませんでした。
- 関数リファレンス/get post type – WordPress Codex 日本語版 → http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_type
- 特定のカスタムフィールドの値をタイトルに自動挿入する | Hack → http://hack.aipo.com/archives/12353/
- カスタムポストのタイトルを自動化しよう【追記あり】 | Step x Step → http://stepxstep.net/wp-content/uploads/2012/08/auto-title-6.jpeg
よくよく考えたら、CSVインポートの時点で、タイトルを用意しておけばいいので、これは実装しませんでした。なお、functions.phpを直接編集するのは、リスクが大きいので「code snippets」プラグインを使いました。
CSVからデータをインポート
WP-RSSImportプラグインを使います。本当に素晴らしいプラグイン、感謝です。
Advanced Custom Fieldsのカスタムフィールドに対応しています。ただし、フィールド名でなく「field key」で指定します。
- Advanced Custom FieldKeyの取得方法 → http://www.advancedcustomfields.com/resources/update_field/#finding-the%20field%20key
また、CSVの仕様はこちらの作者さんのサイトを参考にしました。
- Really Simple CSV Importer 日本語解説&カスタマイズ例 | notnil creation weblog → http://notnil-creative.com/blog/archives/3465
用意したCSVフィールドは下のとおり、最後の3つが「field key」です。
- post_id
- post_name
- post_author
- post_date
- post_type
- post_status
- post_title
- post_content
- post_category
- post_tags
- field_55caf52525349
- field_55caf5372534a
- field_55caf5562534b
MacのExcelで作成したCSVだと、自分の設定が悪いのか?インポートできませんでした。文章だとさらっと1行なんですが、ここ1時間強、はまりました。
Googleドキュメントのスプレッドシートから作ったCSVだと、すんなりインポートできました。
RSSで最新エントリーを表示
WP-RSSImportプラグインで実装しています。ショートコードでも動作しますが、カスタムフィールドを使うので、一緒にPHPコードで形にしています。
表示件数や項目のカスタマイズは下の説明を読みながら設定しました。
- WordPress › RSSImport « WordPress Plugins → https://wordpress.org/plugins/rss-import/
まとめ
1日まとまった時間があったので、自分がいままで購読していたブログさんのリストサイトを立ち上げました。
- ものくろのブックマーク | 現在 約700サイト登録 -まだ構築工事中- → http://ohigashi.me/bookmark/
検索エンジンにはインデックスされないように、noindex設定にしています。
実は去年に同じような機能のサイトを作ったことがあり、それをベースに作りました。こっち(ものくろキャンプ)もデータを更新しないと、、。
- ものくろキャンプ 参加ブログ リスト → http://mono96.org/list/
カテゴリー整理などできていないので、実際に使える形には程遠いのですけれど、まずはこんなこともWordPressでできますよ、ということで、動的にコンテンツを出力するWordPressの真価発揮だと思うのです。
コード
content.php
[php]
<?php
/**
* The default template for displaying content
*
* Used for both single and index/archive/search.
*
* @package WordPress
* @subpackage Twenty_Fifteen
* @since Twenty Fifteen 1.0
*/
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php
// Post thumbnail.
twentyfifteen_post_thumbnail();
?>
<header class="entry-header">
<?php
if ( is_single() ) :
the_title( ‘<h1 class="entry-title">’, ‘</h1>’ );
else :
the_title( sprintf( ‘<h2 class="entry-title"><a href="%s" rel="bookmark">’, esc_url( get_permalink() ) ), ‘</a></h2>’ );
endif;
?>
</header><!– .entry-header –>
<div class="entry-content">
<ul>
<li>サイト名 :
<?php the_field(‘blog_title’); ?>
</li>
<li>URL :
<a href="<?php the_field(‘url’); ?>" target="_blank"><?php the_field(‘url’); ?> </a>
</li>
</ul>
<h3>最新エントリー</h3>
<!– RSSImport(5, get_field(‘feed_url’),); –>
<?php
$rssfeed=get_field(‘feed_url’);
RSSImport(
$display = 10, $feedurl = $rssfeed,
$before_desc = ‘<blockquote>’, $displaydescriptions = true, $after_desc = ‘</blockquote>’, $html = false, $truncatedescchar = 200, $truncatedescstring = ‘ … ‘,
$truncatetitlechar = ”, $truncatetitlestring = ‘ … ‘,
$before_date = ‘ <br><small>’, $date = true, $after_date = ‘</small><br>’,
$date_format = ‘Y/m/d \a\t g:i A’,
$before_creator = ‘ <small>’, $creator = false, $after_creator = ‘</small>’
);
?>
<p>RSSフィード<br> <a href="<?php the_field(‘feed_url’); ?>" target="_blank"><?php the_field(‘feed_url’); ?> </a></p>
<?php
/* translators: %s: Name of current post */
the_content( sprintf(
__( ‘Continue reading %s’, ‘twentyfifteen’ ),
the_title( ‘<span class="screen-reader-text">’, ‘</span>’, false )
) );
wp_link_pages( array(
‘before’ => ‘<div class="page-links"><span class="page-links-title">’ . __( ‘Pages:’, ‘twentyfifteen’ ) . ‘</span>’,
‘after’ => ‘</div>’,
‘link_before’ => ‘<span>’,
‘link_after’ => ‘</span>’,
‘pagelink’ => ‘<span class="screen-reader-text">’ . __( ‘Page’, ‘twentyfifteen’ ) . ‘ </span>%’,
‘separator’ => ‘<span class="screen-reader-text">, </span>’,
) );
?>
</div><!– .entry-content –>
<?php
// Author bio.
if ( is_single() && get_the_author_meta( ‘description’ ) ) :
get_template_part( ‘author-bio’ );
endif;
?>
<footer class="entry-footer">
<?php twentyfifteen_entry_meta(); ?>
<?php edit_post_link( __( ‘Edit’, ‘twentyfifteen’ ), ‘<span class="edit-link">’, ‘</span>’ ); ?>
</footer><!– .entry-footer –>
</article><!– #post-## –>
[/php]
style.css
[css]
/*
Template:twentyfifteen
Theme Name:child15
Description:子テーマです
Author:nobuhito
Version:1.0
*/
@import url(‘../twentyfifteen/style.css’);
body {
font-family: ‘YuGothic’, ‘Yu Gothic’,’游ゴシック’,’ヒラギノ角ゴ Pro W3′,’Hiragino Kaku Gothic Pro’,’メイリオ’,’Meiryo’,sans-serif;
}
.blog_img {
display: block;
margin: 0 auto !important;
padding: 4px;
background: #fff;
border: 1px solid #bfbfbf;
}
.rss_li{
font-size:85%;
margin-bottom:30px;
}
blockquote {
font-size: 14px;
font-size: 1.4rem;
margin-left: .4091em;
line-height: 1.6;
font-style: normal;
}
[/css]
WP-RSSImport
[php]
<?php
$rssfeed=get_field(‘feed_url’);
RSSImport(
$display = 10, $feedurl = $rssfeed,
$before_desc = ‘<blockquote>’, $displaydescriptions = true, $after_desc = ‘</blockquote>’, $html = false, $truncatedescchar = 200, $truncatedescstring = ‘ … ‘,
$truncatetitlechar = ”, $truncatetitlestring = ‘ … ‘,
$before_date = ‘ <br><small>’, $date = true, $after_date = ‘</small><br>’,
$date_format = ‘Y/m/d \a\t g:i A’,
$before_creator = ‘ <small>’, $creator = false, $after_creator = ‘</small>’
);
?>
[/php]
関連エントリー
- [Sylfeed + Chrome] ブックマークレットを使ってRSSを登録する[Sylfeed + Chrome] ブックマークレットを使ってRSSを登録する | ものくろぼっくす
- 【iPhone Sylfeed】お気に入り サイトの”RSSフィード”を新規登録する方法!わずか3タップで出来きます! | ものくろぼっくす
- RSSを購読していただいている方の人数ってわかるの?プラグインで解決!しました。 | ものくろぼっくす
- RSSボタンを設置するのに最低限必要なことを調べてみた。 | ものくろぼっくす
- Feedlyの購読アイコンを設置、同時にRSSボタンも、デザインをリューアルしました。どうぞご贔屓に。 | ものくろぼっくす
- [Sylfeed + Safari + iCloud共有] PCで見ているサイトRSSをその場で素早く登録 | ものくろぼっくす
- Feedlyの購読アイコンを設置、同時にRSSボタンも、デザインをリューアルしました。どうぞご贔屓に。 | ものくろぼっくす
- 【Feedly Pro 有料版 秋から提供を発表】 先着5000名限定 今日から!一生!使える「終身メンバー」を99ドルで募集中 | ものくろぼっくす