プラグインなしでnoteの画像付き記事カードを表示させるスニペット

noteのアイキャッチイラスト

最近noteで書かれた記事を見かける機会が増えていませんか?

かくいう自分もよく利用しています。

noteはブログと同じで情報発信ができるサービスですが「有料販売できる」「文章を書くことに特化」など独自の特徴があり、自分でシステムを構築するよりも、noteで書いた方が人目につきやすく、より拡散されやすい事も多くあると思います。

今回は、プラグインなしでnoteの画像付き記事カードをwordpressに表示させるスニペットについてご紹介します。

noteのカード型サムネイルサンプル

RSSから20個の記事を取得して出力させたカード型のサンプルです。

クリックしてその記事にも遷移でき、本文を80文字抜粋して表示しています。


Warning: file_get_contents(https://note.mu/api/v1/notes/n9a3af9a82709): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

こんにちは!あしたのチームでUIデザイナーをしている戸田です。突然ですが、みなさんはSlackなどのプロフィールアイコンにはどのような画像を設定していますでしょ...


Warning: file_get_contents(https://note.mu/api/v1/notes/nc74fae65e4c7): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

あしたのチームでUIデザイナーをやっている戸田です。早いもので2019年も終わりますね。さて、せっかくなので、事業会社のUIデザイナーとしてこの1年経験してきた...


Warning: file_get_contents(https://note.mu/api/v1/notes/nb9064f847549): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

タイトルの画像は、単に好きな漫画がクライマックスに向かっているので、作っただけです。さて、本題です。続きをみる...


Warning: file_get_contents(https://note.mu/api/v1/notes/n134f96055216): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

セルフユーザビリティテスト検定講座とはこんにちは。あしたのチームでUIデザイナーをやっている戸田です。続きをみる...


Warning: file_get_contents(https://note.mu/api/v1/notes/n64af2b0bebd2): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

どうも、あしたのチーム デザイン事業部 部長 鈴木雄大です。ブログをはじめてそろそろ10ヵ月。今日までで、外部の会社のデザイナーの方とお話しする機会が何度かあっ...


Warning: file_get_contents(https://note.mu/api/v1/notes/n065b42faede3): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

どうも、あしたのチーム デザイン事業部 部長 鈴木雄大です。毎日少なくとも1〜2時間くらいは、色々情報を取り入れることをクセにしている中で、まとめるところもなく...


Warning: file_get_contents(https://note.mu/api/v1/notes/n89656aeb2e74): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

あしたのチームのクリエイティブ事業本部 デザイン事業部で、UXリサーチャー兼UIデザイナーの清水(shimizu_design)です。前回に引き続きUXリサーチ...


Warning: file_get_contents(https://note.mu/api/v1/notes/n454963202d17): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

どうも、あしたのチーム デザイン事業部 部長 鈴木雄大です。ということで、弊社の「人事評価クラウド」が2019グッドデザイン賞を受賞しました。審査の準備、諸々今...


Warning: file_get_contents(https://note.mu/api/v1/notes/n80acc8b6c62c): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

こんにちは、あしたのチームでUIデザイナーをやっている戸田です。今回は私が仕事をしながら使っていて、とっても便利だと感じているmiroについてご紹介しようと思い...


Warning: file_get_contents(https://note.mu/api/v1/notes/n84f300864665): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

あしたのチームのクリエイティブ事業本部 デザイン事業部で、UXリサーチャー兼UIデザイナーの清水(shimizu_design)です。今回は、UXリサーチャーの...


Warning: file_get_contents(https://note.mu/api/v1/notes/nd84a0ccea048): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

どうも、2ヶ月ぶりです。あしたのチーム デザイン事業部 部長 鈴木雄大です。今回は、8/9に登壇した自社セミナー「デザイナー組織の作り方とその人事評価制度」に登...


Warning: file_get_contents(https://note.mu/api/v1/notes/nf66f82d54bf8): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

クリエイティブ事業本部 デザイン事業部で、UXリサーチャー兼UIデザイナーの清水(shimizu_design)です。あしたのチームにジョインして約1年。続きを...


Warning: file_get_contents(https://note.mu/api/v1/notes/ndd75eaf5826a): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

こんにちは。あしたのチームでコミュニケーションデザイナーをしている木村可那子です。最近、急に暑くなりましたね。我が家の猫もたまに溶けています。今回はインハウスな...


Warning: file_get_contents(https://note.mu/api/v1/notes/n42156a235414): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

こんにちは、あしたのチームでUIデザイナーをやっている戸田です。最近帰宅すると9ヶ月になった息子が、自分を見つけた時に「えぁっ」と言ってくれて癒やされます。さて...


Warning: file_get_contents(https://note.mu/api/v1/notes/n4d7f420dfe8e): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

先日、辻堂のエンジニアさんのご自宅でBBQに参加させていただいたのですが、微妙な天候だったのでちょっと残念でした。梅雨、早く終わって欲しいです。どうも、あしたの...


Warning: file_get_contents(https://note.mu/api/v1/notes/nb227fd182662): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

みなさま、おひさしぶりです。夏ですね。自転車通勤がしんどくなってきました。あしたのチーム デザイン事業部 部長 鈴木雄大です。あしたのチーム デザイン事業部も立...


Warning: file_get_contents(https://note.mu/api/v1/notes/ne427420fe183): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

クリエイティブ事業本部 デザイン事業部で、UXリサーチャー兼UIデザイナーの清水(shimizu_design)です。今回はあしたのチーム、デザイン事業部のボス...


Warning: file_get_contents(https://note.mu/api/v1/notes/nd56b91cb2189): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed in /home/c3937730/public_html/dubdesign.net/wp-content/themes/sango-theme-poripu/rss/note_02.php on line 22

note

はじめまして。あしたのチームという会社でコミュニケーションデザイナーをしている、木村可那子(@nene_zaakya)と申します。制作会社のWEBデザイナー・デ...

PHPとCSSのコード

noteの場合はアイキャッチ画像を取得して表示して、wordpressの場合もこのPHPのコードで動き、本文1枚目の画像をサムネイルとして取得して表示します。

CSSはSANGOのテーマに合わせて作ったので、お使いのテーマに合わせて調整しお使いください。

コードを表示する

PHP

<?php
include_once(ABSPATH . WPINC . '/feed.php');
$rss_arr = array('RSSのURLその1', 'RSSのURLその2');
$rss = fetch_feed($rss_arr);if (!is_wp_error( $rss ) ) :
// すべてのフィードから最新20件を出力します。
//全部表示する場合は -1
$maxitems = $rss->get_item_quantity(20);
$rss->set_cache_duration(1800);
$rss_items = $rss->get_items(0, $maxitems); endif;?>
<div class="notecardtype cf">
<!--// 取得できた RSS フィードが0件の時は「No items.」と表示します。-->
<?php if ($maxitems == 0) echo '<li>No items.</li>';
else
foreach ( $rss_items as $item ) : ?>
<article class="notecardtype__article">
<a class="notecardtype__link" href='<?php echo $item->get_permalink(); ?>' target="_blank">
<p class="notecardtype__img">
<?php if(has_post_thumbnail()): ?>
<!--//サムネイルがなければ規定の画像を表示します-->
<?php
    $hash = substr($item->get_link(), strrpos($item->get_link(), '/') + 1);
    $api_data = file_get_contents('https://note.mu/api/v1/' . 'notes/' . $hash);
    $eyecatch = json_decode($api_data, true)['data']['eyecatch'];
?>
<?php
    $first_img = '';
    if (preg_match('/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi',$item->get_content(), $matches )) { $first_img = $matches[1]; }
?>
<?php
    if (!empty($eyecatch)){
       echo '<img src="'.$eyecatch.'" alt="'.$item->get_title().' eyecatch" width="640" height="auto">';
    };
?>
<?php
    if (!empty($first_img)){
       echo '<p class="thumb"><img src="'.esc_attr($first_img).'"  alt="'.$item->get_title().' first_img" /></p>';
}; ?>
<?php
    if(empty($eyecatch) && empty($first_img)){
        echo '<img src="../default.jpg" >';
    };
?>
<?php endif; ?>
</p>
<div class="notecardtype__article-info">
<time class="notepubdate entry-time dfont" itemprop="datePublished" datetime="<?php echo $item->get_date('Y.m.d');// 日付 ?>"><?php echo $item->get_date('Y.m.d');// 日付 ?></time>
<p class="notecardtitle"><?php echo $item->get_title(); ?></p>
</div>
</a>
  <a class="dfont notecat-name catid60"><img src="https://dubdesign.net/wp-content/uploads/2020/11/note_logo.png" alt="note"></a>
<p class="notedescription"><?php echo mb_substr(strip_tags($item->get_description()), 0, 80);// 抜粋記事の文字数を指定 ?>...</p>
</article>
<?php endforeach; ?>
</div>

CSS

.notecardtype time {
    display: block;
    margin: 13px 13px 8px;
    color: #b5b5b5;
    font-size: 15px;
    font-weight: bold;
}

time.notepubdate:before {
    content: "\f017";
    padding-right: 5px;
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    opacity: 0.6;
}

.notecardtype__article {
    position: relative;
    width: 100%;
    margin: 0 0 25px;
    border-radius: 2px;
    background: #fff;
    box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.12), 0 2px 3px 0 rgba(0, 0, 0, 0.22);
    cursor: pointer;
    transition: 0.2s ease-in-out;
}

.notecardtype__article:hover {
    box-shadow: 0 15px 30px -5px rgba(0, 0, 0, 0.15), 0 0 5px rgba(0, 0, 0, 0.1);
    transform: translateY(-4px);
}

.notecardtype__link {
    display: block;
    color: #555;
    text-decoration: none;
    cursor: pointer;
}

.notecardtype__link:hover {
   text-decoration: none; 
}

.notecat-name {
    display: inline-block;
    overflow: hidden;
    position: absolute;
    top: 13px;
    left: 13px;
    height: 22px;
    margin: 0;
    padding: 0 10px;
    border-radius: 14px;
    color: #fff;
    font-size: 11px;
    font-weight: bold;
    vertical-align: middle;
    line-height: 22px;
}
.notecardtype__img {
    margin: 0;
    overflow: hidden;
    position: relative;
    height: 0;
    padding-bottom: 53%;
}

.notecardtype__img img {
    border-radius: 2px 2px 0 0;
    width: 100%;
}

.notecat-name {
    display: inline-block;
    overflow: hidden;
    position: absolute;
    top: 13px;
    left: 13px;
    height: 22px;
    margin: 0;
    padding: 2px 10px;
    border-radius: 14px;
    color: #fff;
    font-size: 11px;
    font-weight: bold;
    vertical-align: middle;
    line-height: 22px;
    background: #FFF;
    text-decoration: none;
}

.notecat-name img {
    height: 20px;
    padding: 1px 0 6px;
}

.entry-time.notepubdate {
    padding: 0 10px 0 0;
    margin-top: -1.0em;
}

.cf {
    zoom: 1;
}

p.notedescription {
    font-size: 0.7em;
    padding: 0px 15px;
    margin-top: -3.3em;
}

.notecardtitle {
    margin: 8px 13px 0;
    font-weight: bold;
    line-height:1.56;
    padding: 0 14px;
}

@media only screen and (min-width: 1030px){
.notecardtype__article {
    width: 48%;
    margin: 0 4% 25px 0;
}
.notecardtype__article:nth-child(even){
  margin-right:0;
}
.notecardtype__link {
    padding-bottom: 25px;
}
}

@media only screen and (min-width: 481px){
.notecardtype__article time {
    margin: 13px 13px 8px;
}

.notecardtype {
    display: -webkit-flex;
    display: -ms-flexbox;
    display: -moz-box;
    display: flex;
    flex-direction: row;
    -webkit-flex-direction: row;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    margin-bottom:1em;
}
}
@media only screen and (max-width: 481px){
p.notedescription {
    font-size: 0.7em;
    padding: 0px 15px 20px;
    margin-top: -1.3em;
}
}

カテゴリーのイラスト

同じカテゴリの記事一覧

ボタンの影