Tag wordpressを表示しています。
2019.9.29 日
巷でいうところの修正をしてもダメでした。 プラグインの問題。Wordpressのプラグインを全部止めるとアップロードできるので、ちょっとずつプラグインを起動して確認する。 php.iniの「max_execution_time」を30(秒)から60(秒)に変更。単に設定変える。 niginxの方でアップロードサイズを拡張する。 niginxのアップロードサイズ変更 niginxとapacheでリバースプロキシしているので、Wordpressのエラーに対してApacheの方のエラーログはなし。ってことはnginxの問題でレスポンスが返っているってことです。client_max_body_size 2g;を追加 location / { proxy_pass http://localhost:8...
2019.3.23 土
WordPressの環境はもう年間何回作ってるんだといった感じで、WEBのサービスとしてはかなりメジャーになってしまいました。 $ docker pull wordpress $ docker pull mariadb docker-compose.ymlを作成してプロジェクトディレクトリ直下においておく。 記述は以下のようにします。ちょっと解説すると、mysqlのデータベースとWordpressrをつなぐので、DB名とユーザー名とパスワードは同じものを設定します。同じものであれば任意の設定で構いません。 docker-compose.yml version: '2' services: wordpress: image: wordpress:latest ports: - "3001:80...
2019.1.7 月
WordPressのアクションフックの話なので特に説明も何もないんですが備忘録して。 今回の趣旨はマニュアルや資料をWordpressを使ってコンテンツを整理しておきたく、また資料はmdで保存しておきたいというのがありました。このブログもそうですが、手順書やマニュアルといったものは過去の履歴を含めて保存しておきたいのですが、Wordpressのリビジョン機能は履歴のバージョン管理ではないので、厳密な管理ができない。ですのでファイルで出力しておいてWordpressのコンテンツごとファイルでその履歴を管理してやろうという魂胆です。バックアップにもなる。 また今回はMarkdown変換のプラグインにJP Markdownを利用しています。 WordPressの記事保存時のアクションフック フック...
2018.11.14 水
これやたらとよく使うけど毎回忘れる。 $title_count = mb_strlen($title,"UTF-8"); $title = $title_count < 20 ? $title : mb_substr($title, 0,20)."..."; タイトルの文字数が20文字以下だったらそのまま出力。20文字以上だったら20文字に丸めて「…」をつけて出力。
2018.10.22 月
Search Everything デフォルトの検索機能に加えて記事内の言葉に検索ワードがヒットするので、これをインストールしてやっと満足のいく検索機能になる感じです。ヒットしたワードにマーカーがつくのでとてもわかりやすいです。 有効化するとデフォルトの検索機能に勝手に機能拡張が行われるので特に何もする必要なしです。 https://ja.wordpress.org/plugins/search-everything/ Crazy Bone ログインしたIPを記録してくれるプラグインです。セキュリティーと管理を強化するプラグインです。 Crazy Bone JP Markdown 記事をマークダウンで記述できるプラグインです。 JP Markdown WordPress Popular Po...
2018.4.4 水
致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。 やたらとバリデートが厳しくなったというべきなのか、よくわからないけどいろんな条件下で設定されているワードプレスの縛りがちょっときつくなったようです。テーマ更新時に自分自身のURLのコールバックをしているので、自分自身と通信できればOKです。また構文自体にエラーが有る場合は、これまた更新されませんが、これはWordpressを安全運用するための装置なのでここでは割愛。また根本的な問題としてテーマファイルとテーマファイルが格納されているディレクトリに書き込み権限がないとダメです。ユーザー権限の場合は777/666...
2018.4.1 日
WordPressで開発していると時折以下のようなブラウザーエラーになるときがあります。 このページは動作していません example.local でリダイレクトが繰り返し行われました。 Cookie を消去してみてください. ERR_TOO_MANY_REDIRECTS
2018.3.26 月
ちょっと遅れ気味ですが、Wordpress Restのお話です。 https://ja.wp-api.org/ https://wordpress.org/plugins/rest-api/ MovableTypeもそうだったようにWordperssもそうなりました。先日SOAPクライアントを使いましたがSOAPと大差ないというか、ほんとにAPIそのものです。 Wordpressが生まれ変わっちゃいました。 投稿を取得する WordPressに指定のURIでアクセスすると投稿の内容がjsonで取得できるというわけです。 http://example.com/wp-json/wp/v2/posts/ 以下にアクセスするとそのままjsonが取得ができます。Wordpressの(開発でよく使う)投...
2018.1.17 水
WordPressのソースの入手 初心者は本家にいってzipをダウンロード。玄人はcomposerとかGitでやったほうが楽。今回は初心者向け。 日本人なのでWordpress日本語サイトからソースをダウンロードします。頻繁にバージョンアップするので都度新しいのを落とした方が良さそう。 https://ja.wordpress.org/download/ ダウンロードしたら、適当な場所に解凍します。 今回は、 URL: http://example.com/wordpress DocumentRoot: /home/user/wwww を例に説明します。 アップロード /home/user/wwww/wordpress 解凍したものを上記パスにwordpressというディレクトリ名でアップロ...
2017.5.16 火
Worpressのテーマファイルは必ずしも使いやすいものではないんですが、この機能も必要なんだか不要なんだかよくわからないといった感じですが、「WordpressのためじゃないWordpress的でもない人々のための適当な設計の強引なWordpress」では重宝することになります。 固定ページのテンプレート page.php 普通の固定ページの記事を表示 page-SLUG.php 任意のページの指定スラッグをもつ固定ページを表示(ただし親記事のみ) とかいろいろできるわけですが、このページの記事をこのテーマファイルで表示するということが自由にできないと思ったら、結構できるんですね。アノテーションを使います。(PHPの/**/こっちのコメントアウトはもはや言語の一部になってますね。) pag...
2017.2.1 水
というタイトルですがmod_rewriteの設定が云々という話になるのでたいした話ではありません。 Symfony2はapp.phpにすべてのアクセスを集約するので、それをindex.phpに変えてあげるのが一番簡単だなぁという感じです。 app/web/.htaccess 62行目あたり RewriteRule ^ %{ENV:BASE}/index.php [L] 70行目あたり RedirectMatch 302 ^/$ /index.php/ 続いてapp.phpそのものをindex.phpにリネームすれば完了です。あとは、app/web/wordpress/というように適当にインストールすれば、/wordpress/でWordpress自体にアクセスできます。 Symfony2とW...
2017.1.20 金
WordPressをインストールするときにドキュメントルート以下にWordpress用のディレクトリ(/cms/)を1つ作ってその中にインストールする場合はアクセスURIが http://example.com/cms/ のようなかたちになってしまいますが、トップページから全部Wordpressにしたい場合はいくつか方法があってちょっと設定変更しないとダメです。 トップページも本体のWordpressの機能にしてしまう(この場合テーマのindex.php、home.php、front_page.phpが使えます。) トップページだけWordpressの機能を使えるようにする。(この場合は、たいていのWPタグを使えるようにしつつもPHPをスクラッチで書く感じ。) ということになると思います。 ...
2017.1.4 水
テーマまでのディレクトリパス bloginfo('name'); // ブログタイトル bloginfo('url'); // ブログ URL : http://hoge.com bloginfo('wpurl'); // wordpress ディレクトリ URL : http://hoge.com/wordpress bloginfo('template_url'); // テンプレートファイル URL : http://hoge.com/wordpress/wp-content/themes/foo bloginfo('stylesheet_url'); // style.css ファイル URL : http://hoge.com/wordpress/wp-content/themes...
2017.1.4 水
WordPressで検索フォームをカスタマイズする時の方法。基本的に単に動くようにするには、テーマ内にを設定してsearch.php(検索結果ページ)を作ってあげるだけでOKです。カスタマイズはいろいろできますが、ここでは検索アルゴリズムはWPに備わっているものを使ってその他の表面的な部分を作成することにします。WordPress Codex 公式ページはこちら。 検索フォームを作成するテーマ内での基本的なコード 1. テーマ内に検索フォームを作成します。 <?php get_search_form(); ?> 2. functions.phpに以下を付け加えます。 function my_search_form( $form ) { $form = '<form role...
2017.1.4 水
テーマの中とかでポストした記事のIDを求めないとダメな時があってその時のメモです。wpdbクラスを使ってやっています。関数内では最終的に最大値に1を加算しているので、実際は、次にポストするIDを求めていることになります。便宜修正して使ってください。 $sql = "select * from $wpdb->posts where post_type = 'post'"; $posts = $wpdb->get_results($sql); $max = multidimensionalMax($posts); print $max."<br />¥n"; function multidimensionalMax($data) { foreach($data as $l...
2017.1.4 水
SSH2の接続モジュールをインストール FTP接続は基本的に嫌なのでもしサーバーの管理権限があるのだったら、SSH2で接続するのをすすめします。なのでWordpressのアップデートなど様々なやり取りでSSH2を使えるようにした方がいいです。 WordPressの更新などでSSH2を使う 先頭の全角スペースを反映させる 日本語は文頭の最初を一文字スペースを入れてインデントするのですが、英文はやらないんですね。WPでは無駄なスペースを最初から親切に詰めてくれるのですが、日本語だとなんか変なので自然にテキストが書けるように文頭全角スペースを反映するように設定します。テーマ内のfunction.phpに以下を埋め込みます。 function my_tiny_mce_before_init_filt...
2017.1.4 水
WPのオリジナルテンプレートはテーマ内でのみ作成可能ということで、なかなか融通が効かないです。しかし融通がきかない分、システマティックで爆速という利点があります。MTのテンプレートのようにいつでもどこでも作れる感じじゃなくて、それなりに制約があるので、それをまとめておきます。 WordPressのオリジナルテーマの基本的な作り方については、いろいろなところに情報があるのでそちらを参照ください。ここで解説するのは、完全にオリジナルなテンプレート1つの作り方です。 固定ページを1つ作る まず、テンプレートをつくるための固定ページを1つ作ります。Wordpressのテーマ内には規定のテンプレート以外で自由につくることができません。テンプレートはその階層順に従って読み込まれるだけで、それ以外の単独P...
2016.12.21 水
wp-blog-header.phpを呼び出すと普通のPHPもWordpressになってしまうんですが、そのページでDownload用のヘッダーとか書き出すとエラーになっちゃうんですね。 include('../../wp-blog-header.php'); ... header('Content-Disposition: attachment; filename='.$file_name); こういう場合は、wp-blog-header.phpが更によんでいるwp-load.phpを呼び出せばまあまあいけます。wp-blog-header.phpの中身ちゃんとみてませんがheaderの内容を強制的に設定してしまっているんですね。たぶん。
2016.12.5 月
WordPressのカスタムフィールドはMTと比べてとてもシンプルです。WPの基本的な約束事として固定ページと 投稿ページは基本的に同じものです。ですのでカスタムフィールドも基本的に同じ構造で保ちます。管理画面から記事を投稿する際には、右上の「表示オプション」からカスタムフィールドにチェックを入れて、カスタムフィールドの入力欄を表示します。後はkeyと値を入れればOKです。登録したkeyは以後プルダウンで選択できるようになります。 加えてテーブル構造が非常にシンプルです。wp_postsが記事やページそのものをストックしているテーブル、wp_postmetaがカスタムフィールドを格納しているテーブルです。また、wp_postmetaは4つのフィールドしかありません。 meta_id bigi...
2016.12.4 日
カスタム投稿タイプを登録する functions.phpに新しいカスタム投稿タイプを登録するのがいちばんカンタンです。 ここでは「bookmark」というカスタム投稿タイプを登録します。もっともミニマルな形だと以下のようなコードになります。 // functions.php add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'bookmark', array( 'labels' => array( 'name' => __( 'Bookmarks' ), 'singular_name' => __( 'Bookmark' ) ), 'publ...
2016.11.7 月
upload_limit1_wpデフォルトでは2MBがアップロードサイズの上限になっています。上限を調整するにはWordpressのなんかを設定変更するとおもいきや、.htaccessとphp.iniの変更でOKみたいです。動画などのメディアをアップすることを考えると20MBぐらいはほしいところです。 レンタルサーバーでは設定に制限があるので、どちらか可能な設定方法でやってみてください。またロリポなどはphp.iniをコントロールパネルから設定できたりするので、そういう設定方法もあります。 結局、Wordpressのアップロードサイズはphpの制限に依存しているってことでした。 php.ini memory_limit = 20M post_max_size = 20M upload_max...
2016.10.29 土
WPではテンプレート(テーマ)を作成する際にテンプレート階層(優先順位)があるので、MT的な考え方でアーカイブテンプレートを作成できません。自分なりに好きなようにカスタマイズしたい場合は、作成工程をWPのルールに従って作成しないとダメです。ですので、ここでは、 スラッグを使ってオリジナルのアーカイブテンプレートを作成してしまう WPタグといわれている標準のWP関数を使わずにWPのオブジェクトを使ってDBから直接データを取り込んで操作してしまう という方法で進めます。完全に自由自在にカスタマイズするのだったらこの方法が一番簡単です。しかしWPの標準機能の方が安定しているし情報も多いのでそれほどでもないって方は通常のテンプレート作成方法(archive.php)で作成した方が無難です。 そもそも...
2016.10.24 月
WPの歴史的な経緯がいろいろあってテーマディレクトリまでのパスの取得の方法は複数あります。必要になる項目は、URLとServer内のフルパスということになるかと思いますが、これがまたややこしい。おそらく以下の例以外にもたくさん関数があるような気がします。 テーマまでのフルパスを取得する もっとも楽なのが、すでにdefineされているTEMPLATEPATHです。これだけでフルパスを取得できます。何らかのテーマカスタマイズでオリジナルのテンプレートをインクルードするとか画像を呼び出すとか多方面で使えます。 <?php print TEMPLATEPATH; ?> <?php include(TEMPLATEPATH.'/underbar.php'); ?> <?p...
2016.10.23 日
WordPress Codex WordpressのフィードはそのまんまPHPで作成します。現在4種類のフィードが使えるようになっているようです。オリジナルのテーマ作成時にはフィードの作成も欠かせないので作り方を解説します。すでに公式ページに詳細に書かれているのですが…。 以下のURLですでにアクセスが可能になっています。ですが、テーマによってはアクセスできない場合があるみたいです。 http://example.com/wp-rss.php http://example.com/wp-rss2.php http://example.com/wp-rdf.php http://example.com/wp-atom.php http://example.com/?feed=rss http:...
2016.10.22 土
WordPressなんかの記事作成・更新時のPING送信一覧です。 http://rpc.reader.livedoor.com/ping http://ping.rss.drecom.jp/ http://ping.ask.jp/xmlrpc.m http://api.my.yahoo.co.jp/rss/ping?u=あなたのサイトのRSSファイルのアドレス http://ping.fc2.com http://rpc.technorati.jp/rpc/ping http://ping.namaan.net/rpc/ http://www.blogpeople.net/servlet/weblogUpdates http://blog.goo.ne.jp/XMLRPC http://b...
2016.10.21 金
固定ページをウィジェットなどに表示するには、 <?php wp_list_pages(); ?> という感じで、wp_list_pages()を使います。公式Wordpress Document すでに公式ドキュメントにかなり詳しく書かれているので、ここで説明すべきことはあまりないのですが、あっさり使うとしたら、以下のような感じになります。 <div class="widget"> <h3 class="widget-header"><?php _e('Pages'); ?></h3> <ul> <?php wp_list_pages('title_li=&exclude=1151,1169'); ?>...
2016.9.29 木
publish_postでフックした際のプラグインの例です。投稿が公開された際、または公開済み投稿の情報が編集された際に実行する。(アクション関数引数: 投稿 ID)ということになっています。idを引数でもらって、get_postから投稿記事のプロパティーをもらってタイトルや記事の内容をそのまま取り出せるという感じです。 またwp_mail()という便利な関数もWPに予め用意されています。値を空にすると無視されたり、内部的にいろいろ処理をしてくれているのでmb_sendmail()を使うよりもWordpressの中では使い勝手がよさそうです。添付の画像なども送信できます。 //更新時にメールを送信 function send_the_content($post_id) { $post = g...
2016.9.21 水
画像投稿時に新着画像順にその記事パーマリンクへリンクするサムネイルを作成します。新聞サイトみたいなものによく使っている方法です。表示するサムネイルの数は$numで編集できます。トップページなどで使うようなやり方です。これアイキャッチ画像を表示する方法と違うますのでご注意。あくまでもブログに貼り付けた画像を取り出す方法です。 この関数の肝は、wp_get_attachment_imageを使うことです。WPに元々組み込まれている関数なので、随時呼び出して使うことが可能です。この関数は、投稿されたイメージやメディアを直接呼び出すのではなくHTMLに書かれたimgタグを呼び出す関数です。なので、投稿された記事との関連付けが容易にできます。 画像そのもののサムネイルを作成する際にはthe_post_...
2016.9.6 火
global $wp_query; echo $wp_query->found_posts.'記事';
2016.9.5 月
ここ最近のWordpressへの攻撃はかつてのWindos XPへの攻撃と同じで「いっぱい使われているから」っていう理由です。特にめちゃめちゃWordpressがセキュリティーホールがあるっていうんじゃなくて、あんたが作ったショボイCMSまがいのものにセキュリティーホールがあったとしても「誰も狙わない」というだけの話しです。そんなわけでかつてのWindows XPも相当に苦労しておりました。(Service Pack2とかでめちゃめちゃ長い更新かけられたりしましたよね。) で、Wordpressのセキュリティーまとめです。 インストール時のテーブルのプレフィックス(接頭語)はwp_以外にする wpのphpコード内にはデータベーステーブルの情報は格納されていません。なので、接頭語を変えておくだ...