WordPress
2023/09/05
WordPressアイコン
概要
ホームページ作りに携わって14年になる。「ホームページ作り入門」などの本を片手に始めて、長い間cssやhtmlタグを使った手作りサイトを作成・管理をしている。
最近では、多くのホームページがWordPressによって作られていることを実感するようになった。
現在担当している公式ホームページをいつか誰かに引き継ぐためにも、汎用的な手法を考えておかなくてはと思う。
ここではホームページとブログを一括りにしてホームページと表現する。
WordPress(ワードプレス)はPHPというプログラミング言語で作られているCMS(*)の一種で、ブログやWebサイトを作る事ができる。 (*CMS = Contents Management System : Webサイトの運営にかかるコストと時間を削減できるツール)
WordPressは世界中の全ウェブサイトの43.1%(2023年6月現在)で利用されており、日本でも人気が高く、利用されたCMSのうちWordPressが大半を占める。個人ではアフィリエイト(*)等のブログに、企業ではWebサイトや記事メディアと広く使われている。 (*アフィリエイト = affiliate : 「成果報酬型広告」とも呼ばれ、自身のサイトやブログ記事に貼った広告経由で商品購入されると、成果に応じた報酬を得られる。)
通常、ホームページは自分のpcでプログラムや画像を作成して、契約しているレンタルサーバーにFTP(File Transfer Protocol)でアップロードする。インターネット閲覧者はChrome、 Safari、Edgeなどのインターネットブラウザを通してサーバーにあるプログラムで、ホームページを見る。
WordPressはレンタルサーバー上でホームページを作成するソフトで、作成したサイト情報をサーバーで保持する。
ホームページを作るには、cssやhtmlを使用するより汎用的なツールを使う時代になった。
さらに数年のうちにAIを使って簡単に好みのホームぺージが作れるようになるだろう。検索してみるとすでにそれらしいサイトはあるようだが部分的にAIを活用しているようだ。指示するだけで好みのページが出来上がるのはもう少し先と思う。この分野は技術的にAIの得意分野である。
AIがホームページ制作に与える影響とは?(Soil Trust)
WordPressを使うには基本的には契約したレンタルサーバーにWordPressを導入して使うが、試験的な使用や学習しようとするにはハードルが高い。
ここで登場するのがXAMPP(ザンプ、シャンプ)という無料ソフト。有難いことに自分のpcに導入すると、あたかもサーバー上で動いているような環境を作ってくれる。
XAMPP サイト
これまで、Web APIのテストにXAMPPの「Apache(アパッチ)」を使用したローカルWEBサイトを数年前から使用しており、今回はデータベースとしてMySQLを使う。WordPressはデータ処理のためにMySQLを使う。
おすすめの参考サイト
レンタルサーバー契約をせずに自分のpcでのみテストをしたい場合はこちら。
ハズ部 : XAMPPを使ってWordPressローカル環境を構築する全手順
レンタルサーバー契約をして、ホームページを作成する場合のガイドとして、こちらのYouTubeがおすすめ。丁寧で分かりやすい。
WordPressテーマ「Cocoon 」を使ったブログサイトの始め方・作り方
レンタルサーバー会社としてlolipopは使いやすい。
【初心者向け】 WordPressの使い方、始め方を徹底解説
XAMPPやWordPressに関して多くのガイドサイトがあり、上でも案内したサイト・YouTubeなどを参照してもらってここでは詳細な説明は省く。気が付いた点など解説する。
*(画像を拡大するには写真上で右クリックしブラウザの「新しいタブで画像を開く」を選んでそちらのタブを表示)
テスト環境 : HP製pc , Core i7-1255U, Windows 11, メモリ16GB , ストレージ SSD 512GB
XAMPPの画面
XAMPPは自分のpcにサーバー環境を構築するアプリ
ApacheはあたかもリモートのwebサーバーのようなローカルWEBサイトを構築
XAMPPで2つ目のModule MySQLを稼働させる(左は導入済みの画面)
簡単に導入・カストマイズできる
導入過程でphpMyAdminのバージョンが古い、との注意がでたので最新のものと入れ替えた。XAMPPのディレクリーの下に置き換えるだけでOK
WordPressを稼働するには、Apacheのネット接続とデータベース操作のMySQLの両方を「Start」させる
稼働中は「Stop」ボタンが表示される
WordPressのダッシュボード
XAMPPのディレクリーの「htdocs」というフォルダーに導入したwordpressを置く
ChromeやEdgeのブラウザで http://localhost/wordpress/wp-admin/ とurlを入力するとWordPressが稼働し、導入時に設定したパスワードでloginするとダッシュボードが表示される
ダッシュボード 【dashboard】
ダッシュボードとは、自動車などの「計器盤」を意味する英単語。ITの分野では、複数の情報源からデータを集め、概要をまとめて一覧表示する機能や画面、ソフトウェアなどを指すことが多い。
ここまでくれば後の操作は簡単
webページレイアウト例
最も多いページレイアウト例
サイドバーはサイトの興味を引き付ける役割
WordPressのダッシュボード・投稿時の注意点
投稿するとデフォルトの設定のままだとパーマリンク構造が 日付と投稿名になる。投稿名が日本語の場合に投稿にリンクすると404のNot foundになる。
パーマリンク構造の設定を「基本」で解決 http://localhost/wordpress/?p=123
作成時にパーマリンクに英数字を上書きするとこの必要がない
Cocoon
各種のテーマが準備されている
Cocoonがシンプルで使いやすい。Coconnの次にCocoon Childを導入する
必ずCoccon Childを使う
有効化するとダッシュボードに「Cocoon設定」が表示される
Coccon設定で好みのスタイルを設定する
記事投稿
ダッシュボードの一番上の「+新規」から「投稿」を選び、タイトルを入力に文字を入力
投稿で右下の黒ぬきの + アイコンを押すと、「段落」、「画像」、「ギャラリー」などが記事の形式が表示される。画像は写真一枚、ギャラリーは複数の写真が投稿できる
記事編集の途中でアイコンが見えなくなることがあるが、エンターを押すと再表示される
記事投稿・ギャラリー
ギャラリーで複数の写真を投稿し、ギャラリーを選ぶと右下に「リンク先」が表示され「メディアファイル」を指定し「投稿」を更新する
ギャラリーの個々の写真をクリックすると拡大表示できる
出来上がり・ヘッダー
とりあえず出来上がった
簡単にできるというが少し見栄えを良くしようと思うと結構面倒
あまりいじらないで好みのテーマをCocoonから選ぶのがよい場合もある
出来上がり・下部
ヘッダーより下の部分
ヘッダーの下に投稿のindexを表示
MySQLエラー
参考) XAMPPエラーログ
2023-09-07 19:29:30 0 [Note] c:\xampp\mysql\bin\mysqld.exe: ready for connections.
Version: '10.4.28-MariaDB' socket: '' port: 3306 mariadb.org binary distribution
230907 19:30:05 [ERROR] mysqld got exception 0xc0000005 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
To report this bug, see https://mariadb.com/kb/en/reporting-bugs
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
Server version: 10.4.28-MariaDB source revision: c8f2e9a5c0ac5905f28b050b7df5a9ffd914b7e7
key_buffer_size=16777216
read_buffer_size=262144
max_used_connections=2
max_threads=65537
thread_count=7
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 20302 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x2b84cd42f98
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
mysqld.exe!?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@2@@Z()
mysqld.exe!?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@2@@Z()
mysqld.exe!?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@2@@Z()
mysqld.exe!?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@2@@Z()
mysqld.exe!?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@2@@Z()
mysqld.exe!?_Assign_grow@?$_Hash_vec@V?$allocator@V?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@std@@@std@@@std@@QEAAX_KV?$_List_unchecked_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@QEAU_iobuf@@PEAX@std@@@std@@@std@@@2@@Z()
mysqld.exe!pthread_dummy()
mysqld.exe!?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@QEBD_K@Z()
mysqld.exe!?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@QEBD_K@Z()
mysqld.exe!?ha_open@handler@@QEAAHPEAUTABLE@@PEBDHIPEAUst_mem_root@@PEAV?$List@VString@@@@@Z()
mysqld.exe!?open_table_from_share@@YA?AW4open_frm_error@@PEAVTHD@@PEAUTABLE_SHARE@@PEBUst_mysql_const_lex_string@@IIIPEAUTABLE@@_NPEAV?$List@VString@@@@@Z()
mysqld.exe!?open_table@@YA_NPEAVTHD@@PEAUTABLE_LIST@@PEAVOpen_table_context@@@Z()
mysqld.exe!?open_and_lock_tables@@YA_NPEAVTHD@@AEBUDDL_options_st@@PEAUTABLE_LIST@@_NIPEAVPrelocking_strategy@@@Z()
mysqld.exe!?open_tables@@YA_NPEAVTHD@@AEBUDDL_options_st@@PEAPEAUTABLE_LIST@@PEAIIPEAVPrelocking_strategy@@@Z()
mysqld.exe!?open_and_lock_tables@@YA_NPEAVTHD@@AEBUDDL_options_st@@PEAUTABLE_LIST@@_NIPEAVPrelocking_strategy@@@Z()
mysqld.exe!?execute_init_command@@YAXPEAVTHD@@PEAUst_mysql_lex_string@@PEAUst_mysql_rwlock@@@Z()
mysqld.exe!?mysql_execute_command@@YAHPEAVTHD@@@Z()
mysqld.exe!?mysql_parse@@YAXPEAVTHD@@PEADIPEAVParser_state@@_N3@Z()
mysqld.exe!?dispatch_command@@YA_NW4enum_server_command@@PEAVTHD@@PEADI_N3@Z()
mysqld.exe!?do_command@@YA_NPEAVTHD@@@Z()
mysqld.exe!?pool_of_threads_scheduler@@YAXPEAUscheduler_functions@@PEAKPEAI@Z()
mysqld.exe!?tp_callback@@YAXPEAUTP_connection@@@Z()
ntdll.dll!RtlHashUnicodeString()
ntdll.dll!RtlClearThreadWorkOnBehalfTicket()
KERNEL32.DLL!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0x2b84cd4c2f0): SELECT COUNT(*)
FROM wp_comments
WHERE ( comment_approved = '1' )
ORDER BY wp_comments.comment_date_gmt DESC
Connection ID (thread ID): 8
Status: NOT_KILLED
Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on
The manual page at https://mariadb.com/kb/en/how-to-produce-a-full-stack-trace-for-mysqld/ contains
information that should help you find out what is causing the crash.
Writing a core file at C:\xampp\mysql\data\
Minidump written to C:\xampp\mysql\data\mysqld.dmp