■目次
導入カスタマイズトラブル
■導入
■ダウンロード 公式サイトからダウンロードできる https://ja.wordpress.org/ 旧バージョンは以下からダウンロードできる https://ja.wordpress.org/releases/ ■インストール 少し前のバージョンをインストールしても、インストール時に最新版に更新される WordPress(ワードプレス)をインストールする方法【初心者向け】 | TechAcademyマガジン https://techacademy.jp/magazine/1354 WordPress(ワードプレス)の使い方 / ホームページ・ブログ作成 / マニュアル - レンタルサーバーならロリポップ! https://lolipop.jp/manual/hp/wordpress-lecture/ WordPress(ワードプレス)とテーマ・プラグインの更新 / ホームページ・ブログ作成 / マニュアル - レンタルサーバーならロリポップ! https://lolipop.jp/manual/blog/wordpress-update/ ■バージョン確認 管理画面のダッシュボードで確認する コードレベルで確認する場合、wp-includes/version.php で確認できる 今使っているWordPressのバージョンを調べる方法 - キーワードノート https://kw-note.com/cms/get-wordpress-version/ ■バージョンアップ 管理画面の「更新」メニューからバージョンアップできる FTP情報を求められる場合、以下を参考にする Wordpressの更新で、FTP経由のアップデートを回避する方法 - Qiita https://qiita.com/pugiemonn/items/c3f9bca255082a085b6c WordPress更新時にFTP情報入力画面が表示される場合の対処方法3つ | sand a lot Web & Music Create [札幌] https://www.sandalot.com/wordpress%E6%9B%B4%E6%96%B0%E3%81%A7ftp%E5%85%A5%E5%8A%9B%E7%94%BB%E9%9D%A2... 「FTP情報が必要」WordPressのプラグイン・本体の更新ができない | ホームページ制作 京都 ファンフェアファンファーレ http://funfairfanfare.com/ftp-wordpress-%E6%9B%B4%E6%96%B0%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84/ 【Wordpress】更新できない時はSSH SFTP Updater SupportでSFTP化しよう - マカラボ - Macalab - https://macalab.net/wordpress/ssh-sftp-updater-support/ 自動でのアップデートを停止させる場合、以下を参考にする WordPressの自動更新(アップデート)を停止する | PLUGMIZE(プラグマイズ) https://plugmize.jp/archives/blog/20160707_update.html ■gitでの管理 git.txt を参照 ■設置し直す場合 稼働しているWordPressから、以下をバックアップしておく(その他、必要なファイルがあれば合わせてバックアップする) .htaccess wp-config.php WordPressのファイルをアップロードし直し、バックアップした上記ファイルを追加アップロードする 以降は通常通り操作できる ■サブディレクトリへの設置 ※未検証 この手順に加えて、URLの置換などが必要になるかも 例えば /wp/ ディレクトリ内にWordPressを設置した場合、アクセスするURLは http://example.com/wp/ のようになる /wp/ ディレクトリ内に置いたまま http://example.com/ でアクセスしたい場合、/wp/index.php と /wp/.htaccess を公開ディレクトリ直下に移動させる さらに /wp/index.php 内の
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
この部分を以下のように変更する
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
■データの移行 searchreplacedb2 を使って、データベース内のURLを置換できる 直接書き換えるのは、データが壊れる可能性があるため非推奨 【決定版】WordPressの引っ越し!サーバー移行・移転手順 | FASTCODING BLOG https://fastcoding.jp/blog/all/system/moving-wordpress/ WordPressでは一部のデータをシリアライズして保持しているが、シリアライズされたデータは以下のようになる 「13」という数値は「administrator」の文字数。このように文字の長さを保持している箇所がある 不用意にURLを書き換えるとデータの長さが代わり、正しく参照できなくなる可能性がある
a:1:{s:13:"administrator";b:1;}
■その他メモ Webクリエイターボックス | WebデザインやWebサイト制作、最新のWeb業界情報などを紹介していくサイト。 https://www.webcreatorbox.com/ ねんでぶろぐ https://nendeb.com/
■カスタマイズ
■コーディング規約 WordPress コーディング規約 - WordPress Codex 日本語版 https://wpdocs.osdn.jp/WordPress_%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A6%8F%E7%... ■雛形用のシンプルなテーマ 以下などのテーマを導入して雛形とし、カスタマイズするといい テーマが入ったディレクトリを /wp-content/themes 内にアップロードするだけで認識される (管理画面から直接インストールするなど、他の方法でのインストールも可) SoSimple - Free WordPress Themes https://wordpress.org/themes/sosimple/ インストールすると、テーマ管理画面に「Good Day, this is the SoSimple theme creator fervillz.」のようなメッセージが表示される これは /wp-content/themes/sosimple/functions.php の215行目あたりにある、以下の部分をコメントアウトすると非表示にできる
add_action( 'admin_notices', 'sosimple_admin_notice__success' );
カスタマイズ前に、案件に合わせた名前に変更しておくといい /wp-content/themes/sosimple のディレクトリ名を変更し、 /wp-content/themes/sosimple/style.css 内にあるテーマ情報も変更する 最低限これだけで大丈夫だが、テーマ内に「@package SoSimple」などが書かれているので、必要に応じて調整する ■子テーマ あるテーマをベースとし、独自に機能を拡張する仕組み テーマを直接カスタマイズすると、自動更新の際にカスタマイズ内容がリセットされてしまう可能性がある 子テーマを使えば、親となるテーマが自動更新されても独自の拡張内容が消えない 子テーマを作ってWordPressの既存テーマをカスタマイズする方法 | Webクリエイターボックス https://www.webcreatorbox.com/tech/wordpress-child-theme ■一から子テーマを作成する 自作テーマのディレクトリ名が公式テーマのディレクトリ名と偶然重複すると、自作テーマが自動更新の対象にされてしまう つまり、突然テーマが上書き削除される可能性がある これを防ぐために、常に子テーマ化しておくという手はある (とは言え、子テーマは親テーマの影響を受けるため、自動更新による変更を完全に防げるわけではない 既存のテーマと重複しないディレクトリ名を付けるくらいで十分かも) 最低限、親テーマとして以下のファイルを作成し、 /wp-content/themes/sample/index.php
<?php
/wp-content/themes/sample/style.css
/* Theme Name: Sample Author: refirio Author URI: http://refirio.net/ Description: Simple theme for simple websites. Version: 1.0.0 */
子テーマとして以下のファイルを作成すれば機能する あとは子テーマの内容のみを編集していく /wp-content/themes/sample-child/functions.php
<?php add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style')); }
/wp-content/themes/sample-child/style.css
/* Theme Name: Sample Child Template: sample Author: refirio Author URI: http://refirio.net/ Description: Simple theme for simple websites. Version: 1.0.0 */
子テーマを作成する際、カレントディレクトリの扱いが変わるので注意 「get_template_directory」があれば「get_stylesheet_directory」に置換することにより、最低限動作するはず WordPress 子テーマがカレントのときのテンプレートディレクトリの取得 - MT Systems http://web.mt-systems.jp/archives/703 ■トップページを作成する 「設定 → 表示設定 → ホームページの表示」 から、特定の固定ページをトップページとして表示できる WordPressで固定ページをトップページに指定する方法 https://wp-exp.com/blog/page-top/ もしくは home.php を作ると、トップページ用のファイルとして扱われる ざっくりWordPressの自作テンプレートの作り方 - Qiita https://qiita.com/kazukichi/items/5126a4fd259d374e99ae テンプレート階層 - WordPress Codex 日本語版 https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E9%9A%8E%E5%B1%A4#.E3.... ■固定ページごとのテンプレートを用意する 例えば http://example.com/ にWordPressを設置しているとして http://example.com/sample/ というページを作成した場合、 テーマとして page-sample.php を作成するとページ専用テンプレートとして扱われる 基本的にはこの方法で固定ページを作成していけばいいが、コンテンツはできるだけWordPressのエディタで編集できるようにする方が管理しやすい (PHP側にコンテンツを記述すると、更新にFTPが必要になってしまう ただしWordPressのエディタ側でコンテンツを記述すると、git管理できないので一長一短 後者でプログラムを扱いたい場合、ショートコードの結果を埋め込むようにすればいい) また、例えば page-contact.php を作成して以下の内容を記述する
<?php /* Template Name: お問合わせページ */ ?>
そうすると、ページ作成の際に「固定ページの属性」の「テンプレート」からこのファイルを選択できるようになる 汎用的なページテンプレートを作成する場合、この方法が利用できる 固定ページのテンプレートを変更する方法【WordPress】 https://webnetamemo.com/coding/wordpress/20150628397 テンプレート階層 - WordPress Codex 日本語版 https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E9%9A%8E%E5%B1%A4#.E5.... 以下は固定ページとしてHTML込みで投稿する場合の、汎用的なテーマの例(page.php)
<?php get_header(); ?> <?php while ( have_posts() ) : the_post(); ?> <?php remove_filter( 'the_content', 'wpautop' ); ?> <?php the_content(); ?> <?php if ( comments_open() || get_comments_number() ) : ?> <section class="column"> <div class="inner"> <?php comments_template(); ?> </div><!-- /.inner --> </section> <?php endif ?> <?php endwhile; ?> <?php /* get_sidebar(); */ ?> <?php get_footer(); ?>
■固定ページに投稿一覧を表示する 固定ページで投稿の一覧表示の実装【初心者のためのWORDPRESS -07-】 | クラウドット株式会社 https://www.cloudot.co.jp/blog/2444/ 固定ページに投稿記事一覧を表示する【Wordpressテンプレートタグ】 | arutega | アルテガ https://arutega.jp/wordpress-tips01/ ■自動挿入されるpタグを削除する このようにして本文を表示している箇所を
<?php the_content(); ?>
以下のように変更する(「remove_filter」を追加する)
<?php remove_filter( 'the_content', 'wpautop' ); ?> <?php the_content(); ?>
wordpressに自動挿入されるPタグを削除する3つの方法 http://hikarika.jp/ptagusakujo/ ■ビジュアルエディタを無効にする HTML込みで固定ページを作成させる場合など、ビジュアルエディタは無効にしておく方が無難 有効に切り替えて投稿すると、必要なHTMLタグが削除されてしまう可能性がある 特定の投稿タイプのみ、ビジュアルエディタを無効にすることもできる WordPressの記事編集時にビジュアルエディタを使えないようにする方法 | TechMemo http://techmemo.biz/wordpress/disable-visual-editor/ ■リビジョンを有効にする デフォルト状態で有効になっているはず 公開ボタン部分に表示されない場合は何度か投稿してみる(1度だけの投稿だと表示されない) 「表示オプション」にある「リビジョン」にチェックを入れると、詳細な履歴が表示されるようになる ■ショートコード 投稿・固定ページ・テーマで、特定の文字列を書くことで特定の内容を挿入できる この仕組をショートコードと呼ぶが、これは自分で追加することができる (プログラムは functions.php に閉じ込め、原則としてテーマからはショートコードを呼ぶ…とすると場合によってはメンテナンスしやすいかも) WordPressのURLをショートコードにしておく - y.o.designers-works http://yuji-okayama-designersworks.com/wordpress/871/ functions.php に、一例だが以下の内容を記述する
/** * ホームのURLを取得(ショートコード) */ function shortcode_home_url() { return home_url( '/' ); } add_shortcode( 'home_url', 'shortcode_home_url' ); /** * テーマのURLを取得(ショートコード) */ function shortcode_theme_url() { return get_template_directory_uri() . '/'; } add_shortcode( 'theme_url', 'shortcode_theme_url' ); /** * 投稿一覧を取得(ショートコード) */ function shortcode_post_list() { $paged = get_query_var('paged'); $args = array( 'posts_per_page' => 5, 'paged' => $paged, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish' ); $the_query = new WP_Query($args); ob_start(); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); ?> <li class="hover"> <a href="<?php the_permalink() ?>" class="hover100"> <div class="img_box"> <?php the_post_thumbnail( 'thumbnail' ); ?> </div> <div class="text_box"> <div class="entry_info_box"> <span class="entry-date"><?php the_time( 'Y.m.d' ); ?></span> <span class="entry-title"><?php the_title(); ?></span> </div> <div class="entry_content_box"> <?php echo strip_tags( mb_substr( get_the_content(), 0, 30 ) ); ?> </div> </div> </a></li> <?php } } wp_reset_postdata(); $contents = ob_get_contents(); ob_end_clean(); return $contents; } add_shortcode( 'post_list', 'shortcode_post_list' );
投稿内では、以下のコードで呼び出すことができる [home_url] ... ホームのURLを取得 [theme_url] ... テーマのURLを取得 [post_list] ... 投稿一覧を取得 テーマ内では、以下のコードで呼び出すことができる <?php echo do_shortcode( '[home_url]' ); ?> ... ホームのURLを取得 <?php echo do_shortcode( '[theme_url]' ); ?> ... テーマのURLを取得 <?php echo do_shortcode( '[post_list]' ); ?> ... 投稿一覧を取得 ■カスタム投稿タイプ 異なるタイプのコンテンツを管理できる function.php にコードを追加することで設定できる。以下は追加例
/** * カスタム投稿タイプ */ function create_post_type() { // コラム register_post_type( 'column', array( 'labels' => array( // ラベル 'name' => 'コラム', 'singular_name' => 'コラム', 'add_new' => '新規追加', 'add_new_item' => '新規コラムを追加', 'edit_item' => 'コラムの編集', 'new_item' => '新規コラムを追加', 'search_items' => 'コラムを検索', 'view_item' => 'コラムを表示', ), 'public' => true, // 投稿タイプをパブリックにするか 'has_archive' => true, // アーカイブを有効にするか 'supports' => array( 'title', // 記事タイトル 'editor', // 記事本文 'comments', // コメント 'thumbnail' // サムネイル ), 'menu_icon' => 'dashicons-edit', // メニューアイコン 'publicly_queryable' => true, 'rewrite' => true, ) ); add_post_type_support( 'column', 'revisions' ); // リビジョンに対応させる場合 // コラムカテゴリー register_taxonomy( 'column-cat', array( 'column' ), array( 'label' => 'カテゴリー', //表示名 'show_ui' => true, //管理画面に表示するか 'show_admin_column' => true, //管理画面の一覧に表示するか 'show_in_nav_menus' => true, //カスタムメニューの作成画面で表示するか 'hierarchical' => true, //階層構造を持たせるか(持たせるとカテゴリー扱い) ) ); } add_action( 'init', 'create_post_type' );
https://qiita.com/kazukichi/items/5126a4fd259d374e99ae の内容を参考に、項目やコメントを追加したい 上のように作成したカスタム投稿タイプの記事を表示する場合、 archive.php single.php を複製して archive-column.php single-column.php を作成する。「column」には register_post_type の第一引数で渡したものを指定する 作成したファイルが認識されない場合、いったん別のテーマに切り替えてから再度戻すと認識されることがある カスタム投稿タイプのカテゴリは、タクソノミーを使って作られている。よってカテゴリでの検索結果は taxonomy.php を作成する。タクソノミー用のテンプレートを作成して…という流れになる http://www.example.com/wordpress/ にWordPressを設置した場合、カスタム投稿タイプのURLは以下のようになる http://www.example.com/wordpress/column/ http://www.example.com/wordpress/column/%E3%83%86%E3%82%B9%E3%83%88/ Wordpress カスタム投稿タイプの作り方 - Qiita https://qiita.com/nagasawaaaa/items/9501c0a2e544d85ee78d WordPressのカスタム投稿タイプでメンバー紹介ページを作成 | Webクリエイターボックス https://www.webcreatorbox.com/tech/custom-post-type Function Reference/register post type - WordPress Codex https://codex.wordpress.org/Function_Reference/register_post_type タクソノミーテンプレート - WordPress Codex 日本語版 https://wpdocs.osdn.jp/%E3%82%BF%E3%82%AF%E3%82%BD%E3%83%8E%E3%83%9F%E3%83%BC%E3%83%86%E3%83%B3%E3%8... ■カスタム投稿タイプのURLを変更 カスタム投稿タイプのURLを変更する場合、Custom Post Type Permalinks プラグインを使うといい …らしいが、導入しても何故かURLが変わらなかった? カテゴリ一覧とタグ一覧ページ以外のURLはおかしなものではないので、導入しなくても大丈夫かも カスタム投稿タイプのパーマリンクをカスタム設定できるWordPressプラグイン・Custom Post Type Permalinks | かちびと.net http://kachibito.net/wordpress/plugin/custom-post-type-permalinks.html Custom Post Type Permalinksを使ってみる | cly7796.net http://cly7796.net/wp/cms/try-using-custom-post-type-permalinks/ ■カスタム投稿タイプでリビジョンを有効にする カスタム投稿タイプは、標準ではリビジョンが無効になっている 明示的に有効にする必要がある カスタム投稿でリビジョンを使えるようにする | Koeda Blog https://ko-e-da.com/131 ■記事一覧を取得する 一例だが、以下のコードで投稿一覧を取得できる
<ul> <?php $paged = get_query_var('paged'); $args = array( 'posts_per_page' => 5, 'paged' => $paged, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish' ); $the_query = new WP_Query($args); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); ?> <li><a href="<?php the_permalink() ?>"> <?php the_time( 'Y.m.d' ); ?> ... <?php the_title(); ?> </a></li> <?php } } wp_reset_postdata(); ?> </ul>
例えば 「'post_type' => 'post',」 の部分を 「'post_type' => 'column',」 とすると、カスタム投稿タイプが「column」の記事を取得できる ■カテゴリ一覧を取得する WordPressの『get_categories』でカテゴリーリストを自由にカスタマイズする | Web技術Tips | ホームページ制作のDOE【横浜】 〜手を抜かず最大のパフォーマンス〜 https://www.doe.co.jp/hp-tips/wordpress/get_categories%E3%81%A7%E3%83%AA%E3%82%B9%E3%83%88%E3%82%92%... ■カスタム投稿タイプのカテゴリ一覧(タクソノミー一覧)を取得する 一例だが以下のようにすると、「column-cat」の一覧を取得できる
<?php $categories = get_terms( 'column-cat', 'hide_empty=0' ); ?> <ul> <?php foreach ($categories as $category) : ?> <li><a href="<?php echo do_shortcode( '[home_url]' ); ?>/column-cat/<?php echo $category->slug ?>/"><?php echo $category->name ?></a></li> <?php endforeach; ?> </ul>
■カテゴリの並び替え 標準機能では並び替えできないので、Category Order and Taxonomy Terms Order プラグインを使う カテゴリーの表示順を並び替えるプラグイン - WordPress超初心者講座 https://wp-exp.com/blog/category-order/ Category Order and Taxonomy Terms Order - WordPress プラグイン https://ja.wordpress.org/plugins/taxonomy-terms-order/ ■日時をフォーマットして表示 the_date() は、同じ日に複数の記事がある場合は一度しか出力されないことに注意 the_time() だと毎回表示してくれる 引数としてフォーマットを渡すことができるが、 原則として「the_time( get_option( 'date_format' ) );」という指定にし、WordPressの設定を反映させる方がいいかも テンプレートタグ/the date - WordPress Codex 日本語版 https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_... テンプレートタグ/the time - WordPress Codex 日本語版 https://wpdocs.osdn.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/the_... WordPressでthe_dateタグは同日だと表示されない | 株式会社LIG https://liginc.co.jp/designer/archives/2266 ■アイキャッチ画像を表示 新着情報にサムネイルを表示したい…のような場合に使える WordPressのアイキャッチ画像の設定方法 | Web’Notes http://webnonotes.com/wordpress/eyecatch/ ■入力項目の追加 カスタムフィールドで値を追加できる Advanced Custom Fields を使えば、専用画面で項目を管理できる Pro版なら、繰り返しフィールドに対応していたりと、より高機能になっている 初心者必見!WordPressで便利なカスタムフィールドとは?設定する手順とプラグインもまとめて紹介|ferret [フェレット] https://ferret-plus.com/8047 Advanced Custom Fieldsの使い方ープラグイン | TechAcademyマガジン https://techacademy.jp/magazine/7640 Advanced Custom Fieldsを更に使いやすく!ACF Proを選ぶ理由と機能紹介 | KERENOR { ケレンオール } http://www.kerenor.jp/acf-pro-introduction/ 無料版Advanced Custom Fieldsから有料版ACF Proへアップグレード/インストールする方法 | KERENOR { ケレンオール } http://www.kerenor.jp/upgrade-to-acf-pro/ カスタムフィールドとして追加した値は、テーマ側に以下のようなコードを追加すれば表示できる
<?php echo get_field( 'test1' ); ?> <?php echo get_field( 'test2' ); ?>
Advanced Custom Fieldsの出力 http://kotori-blog.com/wordpress/acf_output/ ■フックで処理を制御する ※要検証 WordPressではフックを使うことにより、特定のタイミングで処理を行わせることができる 本体やプラグインを改造する前に、アクションフックで対応できないか考える WordPressのフック、アクションフック、フィルターフックとは? - WPJ https://www.webprofessional.jp/wordpress-hook-system/ WordPressにおけるフック処理の仕組みとは? http://nanoappli.com/blog/archives/7594 プラグイン API/アクションフック一覧 - WordPress Codex 日本語版 https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7... ■フォームメールを設置する プラグインで対応できる Contact Form 7 が一番有名だが、そのままではプレビュー画面を表示できない 仕事で使うなら MW WP Form が柔軟でいいかも MW WP Form - 柔軟なカスタマイズ性が魅力の WordPress 問い合わせフォームプラグイン MW WP Form 公式マニュアル https://plugins.2inc.org/mw-wp-form/ MW WP Formを使った問合せフォームの作り方 | New Standard http://newstd.net/wordpress/1829 MW WP Form のセレクトボックスで「選択してください」を空欄とみなす最も簡単な方法(JavaScript 非使用) | フロントエンドエンジニアのblog | 有限会社Willさんいん https://www.will3in.co.jp/blog/article/select-as-blank-in-mw-wp-form/ ■会員サイトを作成する WP-Members のみ試した 日本語化など初期設定にそこそこ手間がかかりそうな感じだが、定番プラグインみたいなので解説が多くて何とかなりそう 「登録完了時に◯◯の処理をする」のような改造をしたい場合、 /wp-content/plugins/wp-members/inc/register.php を改造すれば何とかなりそう ただし改造するとプラグインをアップデートできなくなるので、do_action() などアクションフックで何とかしたいところ WordPressで会員サイトを簡単に作成できるプラグイン10選|ferret [フェレット] https://ferret-plus.com/8807 WordPressで会員サイトが構築できるプラグイン「WP-Members」 | Spider Webs https://spiderwebs.tokyo/wp-members/ 【Plugin】会員登録・ユーザー情報編集機能などを備えた「WP-Members」 http://www.hiskip.com/wp/plugin/site-manage/membership/2362.html ■パスを「http」始まりではなく「/」はじまりにする テーマの functions.php に以下を記述する
class relative_URI { function relative_URI() { add_action('get_header', array(&$this, 'get_header'), 1); add_action('wp_footer', array(&$this, 'wp_footer'), 99999); } function replace_relative_URI($content) { $home_url = trailingslashit(get_home_url('/')); return str_replace($home_url, '/~wordpress/', $content); } function get_header() { ob_start(array(&$this, 'replace_relative_URI')); } function wp_footer() { ob_end_flush(); } } new relative_URI();
【WordPress】出力されるリンクURLを絶対パスからルート相対パスに変更する方法 | WordPress | マイホームブログ | Web屋の芝生DIY https://web-diy.jp/2016/10/161014_01/ ■同一LAN内の他端末からアクセスする スマートフォンから直接手元のPCにアクセスしようとしても、WordPressを http://localhost/wordpress/ のURLでセットアップしていると http://192.168.1.25/wordpress/ にアクセスしても http://localhost/wordpress/ にリダイレクトされてしまう(他端末からはアクセスできない) この場合「http://192.168.1.25」を前提としてWordPressを設置しなおせばアクセスできるが、以下のようにするだけでもアクセスできる wp-config.php
define('WP_HOME','http://192.168.1.25/wordpress'); define('WP_SITEURL','http://192.168.1.25/wordpress');
この設定があると、本来のURLよりも優先して認識してくれる ただし、マルチサイトで構築したサイトだと正しく反映されないことがあるかも?要調査 ローカル環境にコピーしたWordPressが本家にリダイレクトされる時の対処法 | TechMemo http://techmemo.biz/wordpress/redirect-local-xampp/ ■管理画面のURLを変更する ログインページを変える:WordPress私的マニュアル https://elearn.jp/wpman/column/c20121118_01.html ■管理画面のメニューを整理する プラグインで管理画面のメニューを簡単整理!「Admin Menu Editor」がお手軽でおすすめ(WordPress) http://room9.jp/2014/02/26/080000/ ■管理画面のメニューにある「投稿」の表記を変更する 管理画面の「投稿」のラベルを変更する | WordPressカスタマイズ事典 http://wpcj.net/1171 ■記事を複製する Duplicate Postの使い方と設定方法|記事を複製できるプラグイン https://nakaeshogo.com/duplicate-post/ ■Instagramを表示する InstagramのフィードをWordPressに表示させるプラグイン「Instagram Feed」の設定方法 | 内藤勲ブログ https://naitoisao.com/23832/ Instagram フィード - WordPress プラグイン https://ja.wordpress.org/plugins/instagram-feed/ ■titleタグについて 現在は wp_title() でtitleタグの内容を出力するのは、非推奨になっているので注意 (タイトルが二重に出力される可能性がある) WordPress 4.4 から wp_title関数が 非推奨になりました - ねんでぶろぐ https://nendeb.com/313 ■使用プラグイン例 某保険会社サイトの構築で使用したプラグイン。参考程度に (インポート&エクスポート系のプラグインを複数入れているが、「使えなければ他のものを試す」と作業できるようにしたため) admin-menu-editor ... Admin Menu Editor advanced-custom-fields-pro ... Advanced Custom Fields PRO(有料プラグイン) akismet ... Akismet Anti-Spam all-in-one-seo-pack ... All In One SEO Pack csv-post-manager ... CSV投稿マネージャー(有料プラグイン) custom-post-type-permalinks ... Custom Post Type Permalinks duplicate-post ... Duplicate Post google-sitemap-generator ... Google XML Sitemaps instant-comment-validation ... Instant Comment Validation(無効化されていた) mw-wp-form ... MW WP Form(確認画面が不要なら Contact Form 7 が定番) ps-auto-sitemap ... PS Auto Sitemap ps-taxonomy-expander ... PS Taxonomy Expander really-simple-csv-importer ... Really Simple CSV Importer search-regex ... Search Regex simple-301-redirects ... Simple 301 Redirects wp-all-export ... WP All Export wp-all-import ... WP All Import wp-comment-fields ... WP Comments Fields Manager(無効化されていた) wp-csv-exporter ... WP CSV Exporter wp-multibyte-patch ... WP Multibyte Patch wp-user-avatar ... WP User Avatar ■WordPress外からWordPressのデータを参照する 普通のPHPファイルで wp-load.php を読み込むと、WordPressの命令を使用できるようになる 例えば以下のようにすると、WordPressの記事を10件一覧表示できる
<?php require_once '/path/to/wp-load.php'; $posts = get_posts('numberposts=10'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>記事一覧</title> </head> <body> <h1>記事一覧</h1> <ul> <?php if ($posts): foreach($posts as $post): setup_postdata($post); ?> <li><a href="<?php the_permalink();?>"> <?php the_title(); ?></a></li> <?php endforeach; endif ?> </ul> </body> </html>
例えば以下のようにすると、ヘッダやフッタも含めて表示できる
<?php require_once '/path/to/wp-load.php'; $posts = get_posts('numberposts=10'); ?> <?php get_header() ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <h1>記事一覧</h1> <ul> <?php if ($posts): foreach($posts as $post): setup_postdata($post); ?> <li><a href="<?php the_permalink();?>"> <?php the_title(); ?></a></li> <?php endforeach; endif ?> </ul> </main><!-- .site-main --> </div><!-- .content-area --> <?php get_sidebar() ?> <?php get_footer() ?>
■マルチサイト WordPressマルチサイトのメリット・デメリット・設定方法 | 株式会社ベクトル | 名古屋でWordPressを活用したウェブ制作・システム開発 https://www.vektor-inc.co.jp/post/wordpress-multi/ 【決定版】WordPressをマルチサイト化する時のつまずきポイント全て解決!! - いーもんみつけたぞいや ー楽しむ子育てとガジェット情報ー http://info2info.net/blog/2017/03/10/wordpress001/ 【WordPress】マルチサイトでのテーマの認識。 | studio a.m. http://studio-a-m.net/%E3%80%90wordpress%E3%80%91%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B5%E3%82%A4%E3%83... ■脆弱性の診断 ※未検証 wpscan環境をWin10 proで手っ取り早く作り、Wordpressサイトの脆弱性をスキャンしてみる - Qiita https://qiita.com/9steps/items/7860243a86ce6745702c
■トラブル
■意図しないデータが取れる / 意図したデータが取れない ループが複数あると、そのような挙動になることがある。前のループの終わりで wp_reset_postdata() を呼び出すと解決することがある サクッと複数ループのコピペと解説|WordPressの使い方 https://wpno.jp/2017/06/5892/ WordPressの「wp_reset_postdata()」は具体的にどんな時に必要になるのかについて | たくおのーと https://takuo4649design.com/weblog/note/archives/13361 ■リダイレクトループ対策 リダイレクトループが発生した場合、wp-config.php に以下を書けば何とかなることがある
$_SERVER['HTTPS'] = 'on';
SSL対応後のWordpress管理画面で発生した無限リダイレクトループの修正方法 - Qiita https://qiita.com/hirror/items/bb96e236c3ffc41e890e ただし、「require_once(ABSPATH . 'wp-settings.php');」より後に書くと「このページにアクセスする権限がありません。」と言われ、 管理ページにログインできなくなるので注意 WordPress + HTTPS + リバースプロキシ = このページにアクセスする権限がありません。 - yohgaki's blog https://blog.ohgaki.net/wordpress-https-reverse-proxy-sorry-you-are-not-allowed-to-access-this-page AWSのELB配下でHTTPSリダイレクトさせる場合、以下が参考になる ELB配下のApacheで外部はHTTPSにリダイレクトし、内部のサーバのみHTTPで通信させる - Qiita https://qiita.com/wapa5pow/items/a5c4fc188e5da0ddde1d AWS EC2で常時SSLを実現する際の注意点 - Qiita https://qiita.com/michimani/items/88973c5e2ae76a8e84aa ■管理画面以外で英語表記になる ※無理矢理な対応なので非推奨 何故か「本番環境でのみ日本語表記にならない」ということがあったので調査 /wp-includes/l10n.php の560行目あたりを以下のようにすると日本語表記になった。でも他への影響が不明 プラグインの設定が悪さをしているみたい?
558: if ( true == $plugin_override ) { 559: // unset( $l10n_unloaded[ $domain ] ); 560: 561: // return true; 562: }
「設置した翻訳ファイルの読み込みを無効にする」という処理のコメントアウトなので、問題ない…はず 何かキャッシュの設定が悪さをしているとか?不明 以下に該当箇所のコード解説がある。参考までに WordPress 英語サイト作成時に翻訳ファイルが読み込めない https://tadtadya.com/wordpress-i-can-not-read-a-translation-file-when-creating-an-english-site/ ■管理画面からテーマファイルを編集できない 管理画面の「外観 → テーマの編集」からテーマを編集できるが、編集時にWordPressのバージョンによっては 「致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。」 というエラーが表示される。 WordPress4.9からテーマ編集の入力チェックが厳しくなっており、実質この機能は使えないみたい FTP経由で更新することが推奨される 【対処法】WordPress4.9でテーマの編集がエラーでできない時 https://nomadicwood.com/archives/5802 どうしても管理画面から編集したい場合、本体プログラムを調整することで対応できる /wp-admin/includes/file.php の492行目から599行目 以下の部分を丸ごとコメントアウトすると入力チェックを外すことができる
492: if ( $is_active && 'php' === $extension ) { 493: 494: $scrape_key = md5( rand() ); 495: $transient = 'scrape_key_' . $scrape_key; 496: $scrape_nonce = strval( rand() ); 497: set_transient( $transient, $scrape_nonce, 60 ); // It shouldn't take more than 60 seconds to make the two loopback requests. 〜略〜 597: return new WP_Error( 'php_error', $message, $result ); 598: } 599: }
【エラー修正】致命的なエラーをチェックするためにサイトと通信できないため、PHPの変更は取り消されました。 https://take-it-easy.tokyo/miscellaneous-notes/wordpress/correct_fatal_error