feedlyの過去記事のあしらいが意外と厄介

みんなが大好きだったGoogle Readerがなくなってしまい途方にくれたあの時からもう2年以上が過ぎました。そんなGoogle Readerの代わりにfeedlyを使っている人も多いと思います。
使う側は問題ないのですが、RSSを配信する側には注意が必要です。

feedly

feedlyは一度RSSを読み込むと更新しない

もちろん新しい記事に対しては登録されます。問題なのが過去記事。feedlyはあるサイトのRSSを読み込むとそれをfeedy内部で保管。別の人が同じRSSを読んだ場合、該当サイトから取得せずにfeedly内部で保持している情報を出すのです。
Wordpressでブログを運用するとします。WordpressのRSSは初期状態でRSS内部に投稿者情報を書き込みます。この投稿者情報が社員のフルネームだったりすると、そのまま出てしまうんです。公開前に試しにfeedlyで読み込んでみたら「名前が出ている!」なんてことに気がついてもfeedlyに読み込まれてしまったこの情報は消すことができません。
「test」なんて試しに作った記事もそのまま残ってしまいます。

feedlyは慎重に

いろいろ調べてみたのですがfeedlyに読み込まれた過去の内容を変更する方法はないみたいです。最近ではサイトにfeedlyのボタンをつけているとこも多くあります(このブログも下にあります)。CMSから吐き出されたRSSファイルは舐めまわすように見て、それからRSSリーダーに登録して確認しましょう。
「test」などの記事も404で終わりはもったいないので、404対応もしておきましょう。

[phg media=”software” id=”697846300″][/phg]

MTEntries idで何も表示されない不思議

Movable Typeで運用しているサイトのPC表示でPICK UPのコーナーを設けてTOPページに任意のページへのリンクをつけています。これをスマホサイトにも適用しようと以下のコードを書いたのですが何も表示されません。

※テストのため該当ID(4264)の記事のタイトルだけを表示しようとしています。

テンプレートの種類は「カスタムインデックステンプレート」です。lastnでは表示されるのですがidを使うと、とたんに何も表示されません。

いろいろと調べたところ以下のサイトが参考になりました。
カテゴリーアーカイブ内で任意のエントリーを表示する(Technology on Information)

こちらを参考にテンプレートを以下に変更

これで無事に表示されました。
ただ不思議なのは参考にしたサイトではカテゴリーアーカイブテンプレートの場合に現象が発生すると言っているのですが、私の場合はカスタムインデックステンプレートで起きています。テンプレートの種類を「メインページ」にしても現象は変わりませんでした。この謎は解明していません。

WordPressでタイトル入力を必須にする方法

今までまったく知らなかったのですがWordpressはタイトル、本文を入れなくても記事が公開できてしまうんです。

「タイトル入れないってどうゆうことだ!」と思ってしまうのですが、できてしまうものは仕方ないです。

タイトルを入れなくても公開できている

記事一覧では(タイトルなし)と表示される

※タイトル、本文両方入れない場合「投稿を公開しました」と表示されるが実際のページはない。

運用ルールで“タイトルは必ず入れる”とすればいいとは思うが、ついうっかりもあるかもしれないのでタイトルが入力されていない場合はアラートが出るようにします。
以下をfunctions.phpに追記します。

タイトルの有無をjQueryでチェックしてアラートを出しています。「タイトルを入力してください」の部分はアラートで表示する文字なので好きな文字に変更して使えます。

タイトルを入力しないで公開しようとするとアラートが表示される

これでタイトルを入力しないで公開しようとするとアラートが表示され記事は公開されません。

WordPressの検索結果を日付順にソートする

WordPressの検索結果って日付順で並んでいたと思うのだが、久しぶりに検索してみたらバラバラに並んでいた。Googleでいろいろ検索して調べたらどうもver3.7から関連度順(タイトルに検索語がマッチする投稿が優先される)に仕様が変更されたらしいです。
それでも全然かまわない、むしろ歓迎って場合もあるだろうけど、ニュースサイトのような使い方をしている場合、やはり日付順に並んで欲しい。

そこで昔のように検索結果を日付順にするためにfunction.phpに以下のコードを書きます。

これで検索結果が日付順に並びます。

[tmkm-amazon asin=’4797381078′][/tmkm-amazon]

Movable Typeの検索結果の1ページ毎の表示件数の変更方法

ふと、MTで運用しているサイトの検索結果画面を見てみると異様に1ページが長いことに気づいた。数えてみると20件表示されている。
このサイトは抜粋表示はしておらず、一覧ページでも記事全文が表示されている。indexページは1ページ5件で表示しているので検索結果も1ページ5件にしたい。

これを実現するにはmt-config.cgiに以下の一文を記述します。

最後の「5」が1ページに表示する件数になる。この記述がないとデフォルト20件表示になります。

このことを調べているとmt-config.cgi記述後に再構築が必要とか、検索フォームにhiddenでinputタグを追記、などとあったが私の場合、再構築もテンプレートの変更も必要ありませんでした。最後の「5」が1ページに表示する件数になる。この記述がないとデフォルト20件表示になります。

WordPressの初期カテゴリー「未分類」を消す

WordPressをインストールするとカテゴリーに「未分類」が設定されています。WordPressでサイトを運用する上で、記事をカテゴリー「未分類」にすることはほとんどないと思うので、カテゴリー「未分類」消したいと思います。

管理画面からカテゴリーを開き、未分類にマウスを当てるとリンクが表示されるのですが「削除」がありません。

カテゴリー一覧

しかたがないので編集をクリックしてカテゴリー編集ページに入っても「削除」に準ずるボタンやリンクはありません。

試しにひとつカテゴリーを作ってみると、作ったカテゴリーには「削除」のリンクが現れます。

カテゴリー一覧

カテゴリー「未分類」は消せないわけではなく、設定でデフォルトカテゴリーになっているために消せなくなっているのです。なので、デフォルトカテゴリーを「未分類」以外に設定すればカテゴリー「未分類」を消すことができます。

1. デフォルトカテゴリーの変更

「設定」→「投稿設定」の“投稿用カテゴリーの初期設定”を未分類以外に変更し変更を保存します。

投稿設定

 

2. カテゴリー「未分類」削除

「投稿」→「カテゴリー」で“未分類”を削除。

カテゴリー一覧

カテゴリー「未分類」に設定されている投稿がある場合、その投稿は1で設定したデフォルトカテゴリーに設定されます。

WordPress、管理画面の左メニューから不要なメニューを非表示にする

下の画像は“投稿者”権限のユーザーでログインした際の管理画面左メニューの状態です。

wordpress管理画面の左メニュー

メインメニューを非表示にする

左メニューの全てを非表示にするためにテーマのfunctions.phpに以下を追記します。

これで投稿者権限のユーザーでログインすると左メニューが何もない状態になります。
左メニューを何もない状態にすることは少ないと思うので表示しておきたい部分はコメントアウト、もしくは削除することでメニューに表示することができます。

wordpressの管理画面から左メニューがなくなった状態

ifの条件部分はいろいろと指定することができます。
!current_user_can(‘level_10’)
とすればレベル10以下のユーザー全てに適用することができます。

ユーザーの種類についてはWordPress Codex日本語版に記載されています。

remove_menu_page(‘index.php’);
のindex.phpの部分はメニューのファイル名になるので上記以外、例えば「外観」だったら“themes.php”を指定することで「外観」を非表示にすることができます。

サブメニューを非表示にする

サブメニューを持つ項目のサブメニューだけを消したい場合もあると思います。
その場合はremove_menu_pageの部分を以下のように記述します。

 

remove_submenu_page(‘edit.php’,’post-new.php’);

上記は「投稿」→「新規投稿」を非表示にしてます。

remove_submenu_page(‘メインメニュー’,’サブメニュー’);
と記載することでサブメニューだけを消すことができます。

これらは表示を消しただけでアクセスできないわけではありません。
操作そのものも制御する場合はUser Role Editorなどを使って操作そのものも制御しましょう。

WordPressでメディアを追加時にメディアのリンク先をデフォルトで「なし」にする方法

WordPressで記事にメディアを追加するとメディアのリンク先がデフォルトで「メディアファイル」なっています。
このまま記事を作成するとメディアにリンクが張られた状態になります。リンク先はメディアそのものです。メディアが画像だった場合、リンク先はアップロードした元画像となり、縮小した画像を掲載した場合、元サイズの画像を見ることができます。

WordPressの「メディアを追加」画面

ただ、こんな設定をしたい状況はそうなく、基本的にはただimgタグで画像を掲載できればいい場合がほとんどだと思います。

デフォルトではリンク先が「メディアファイル」になっているので手動で「なし」にすればリンクは張られないのですが、それを毎回するのは面倒です。そこでデフォルトのリンク先を「なし」にしてみます。

http://(ワードプレスをインストールしたURL)/wp-admin/options.phpにアクセス

WordPressの管理画面内のリンクからは辿れない設定画面があります。WordPressにログインし管理画面を開きwp-admin/の後ろにoptions.phpを記載してページを開いてみます。
すると「すべての設定」ページが開きます。

image_default_link_typeをfileからnoneに変更

すべての設定からimage_default_link_typeを探します。デフォルトではfileになっているのでここを「none」に書き換えます。
書き換えたらページ最下部の「変更を保存」ボタンをクリックして設定を確定します。
これでメディアを追加した際のリンク先がデフォルトで「なし」になります。

すべての設定画面でimage_default_link_typeを修正

infinitescrollのオプション設定

このサイトでも使用している無限スクロールスプリクト「infinitescroll」ですがバージョンが上がり、一部仕様が変ったようです。

※動作検証はinfinitescroll version 2.0.2jQuery version 1.11.1で行っています。
※WordPressプラグインは使用していません。

infinitescrollでは追加コンテンツ読み込み時に好きな読み込み画像とテキストを表示できます。この設定を検索していると高確率でASCII.jpのこのページにたどり着くと思います。
このサイトもASCII.jpの説明の通りに設定して無限スクロールを実現してます。

ところが最近、新規に制作しているサイトでこれを実装しようとしたところ、動作しませんでした。どうやらオプションの設定方法が変更になったようで、以下のようにJS部分を記載したところオプションが無事反映されました。

 

さて、動いたのですが新規作成サイトでinfinitescrollに関する別の問題が発生しました。新規サイトはWordPressで構築しているのですがinfinitescrollが3ページ目を読み込まないのです。
WordPressのパーマリンク設定は変更していないので試しにURLに/?paged=2を付加して直接2ページ目を表示したところ、2ページ目からは3ページ目が読み込まれましたが今度は4ページ目が読み込まれません。
どうやら自ページの次ページしか表示できなくなっているようです。

その解決策がこちらのサイト(ARKの技術メモ)に記載されていました。
どうやら次のページ番号がURLのどの部分なのかinfinitescrollがわからなくなっているようです。
これもinfinitescrollのオプション設定でinfinitescrollに教えることができるようで、上記の設定を以下のように変更して解決しました。

[tmkm-amazon asin=’479736758X’][/tmkm-amazon]

WordPressのJSとCSSからverを取り除く

WordPressでは外部のjsやcssを読み込む際、WordPressのバージョンやプラグインのバージョンが「?ver=***」と付与されます。
このバージョン番号が付与されることによってバージョンが上がった際ファイル名が替わったとみなされ、ローカルにキャッシュされたものではなく、新たに読み込まれ、表示崩れ等の不具合を起こさない利点があります。

?ver=***が付与されている場合

(更新前)
example.css?ver=3.8.3

(更新後)
example.css?ver=3.9

更新前と更新後で別ファイル扱い

?ver=***が付与されていない場合

(更新前)
example.css

(更新後)
example.css

更新前と更新後は同じファイルとみなされる

なんだか便利なように感じます。
が、WordPressのデフォルトでソースに表示されている<meta name=”generator” content=”WordPress ***” />を消している場合、せっかく消した意味がなくなってしまいます。
そこでjsやcssに付与されるver=***も消してみよと思います。
function.phpに以下のコードを追記します。

全てのver=***を削除する場合

 WordPressのバージョンが付与されたver=***のみを削除する場合

 ちなみに<meta name=”generator” content=”WordPress ***” />を消す記述

これらを消したからセキュリティ的にどうこう、と思わないほうがいいと思います。常に最新のバージョンを使うようにしましょう。