WordPress→WordPress カテゴリ階層付き記事のエクスポート&インポート方法メモ

WordPress→WordPress カテゴリ階層付き記事のエクスポート&インポート方法メモ

WordPress→WordPressへのエクスポート&インポートでうまくいった方法についてのメモ。

前にもメモった通り、カテゴリーとタグのエクスポート&インポートやslugの置き換えなどはWP Import Export Liteというプラグインを使うといい。

ただしカテゴリーの階層を保ったまま記事をエクスポート&インポートするにはWP Import Export Liteでは上手くいかず、All-in-One WP Migrationも途中で止まってしまった。自分の設定が悪いんだろうが、唯一WP All Exportが上手くいったので、その方法についてのメモ。

エクスポート元の操作

管理画面左側の「すべてエクスポート」から「新規エクスポート」を選んで開く。

エクスポートするのものを選択:特定の投稿タイプ
投稿タイプを選択:投稿

「エクスポートファイルをカスタマイズします」を選択

右側の「利用可能なデータ」から「分類」→「カテゴリー」「タグ」を選んで左にドロップする。「ID」「Title」「Content」は元々選択されているが、必要に応じて「Date」「Permalink」「Slug」「Image URL」「Image Path」なども選択。

Export Typeを選択して「続行」を押す(自分はそのまま)。

次のページで「Save & Run Export」を押してエクスポート完了。

インポート先の操作

管理画面左側の「すべてインポート」から「新規インポート」を選んで開く。

「ファイルをアップロード」などを選びインポートする。

「新しいアイテム」「既存のアイテム」を選択する項目が出る。必要な項目を選び、「ステップ2に進みます」を選択。

「○○○行インポートされます それを選択するか、フィルタリングオプションを追加するには、スクロールダウンします」という表示が出て、インポートする項目のプレビューが表示される。特に何も設定しないと、カテゴリーは「undefined5」、タグは「undefined6」に割り当てられる。

「ステップ3に進みます」というボタンを押す。

「ステップ3 Drag & Drop」のページ。必要に応じて左の項目を開いて設定。「タクソノミー、カテゴリー、タグ」はそのままの状態でチェック入ってた。

「ステップ4に進みます」というボタンを押す。

「ステップ4 インポート設定」のページ。既存の投稿をファイル内の変更されたデータで更新するかどうかなど尋ねられる。特にいじらず「続行」ボタンを押す。

「ステップ5 Confirm & Run」最後の確認のページ。問題なければ「インポートの確認&実行」ボタンを押す。これで操作完了。

WordPress マルチサイトで小サイトの画像をメインサイトと同じフォルダに保存する

WordPress マルチサイトで小サイトの画像をメインサイトと同じフォルダに保存する

WordPressをマルチサイト化して小サイトの画像保存先をメインサイトと同じフォルダにする場合、下記のサイトに従ってfunctions.phpに以下のように書き込むのが自分的には一番良かった。従来のサイトでは「http(s)://ドメイン名/wp-admin/options.php」を開いて「upload_path」と「upload_url_path」を編集してたけど、そこをいじる必要もなかった。

/*** 画像をメインサイトと同じフォルダに保存する*/
add_filter(
'upload_dir',
function ($dirs) {
if ( is_multisite() ) {
$dirs['baseurl'] = network_site_url('/img');
$dirs['basedir'] = ABSPATH . 'img';
$dirs['path'] = $dirs['basedir'] . $dirs['subdir'];
$dirs['url'] = $dirs['baseurl'] . $dirs['subdir'];
}

return $dirs;
},
999
);

【WP】マルチサイトのメディアファイルの保存場所を統一する方法

マルチサイトの場合、メディアファイルの保存場所は、サイトURL/wp-content/uploads/sites/サイトID/年/月/image.jpg がデフォルトです。

当サイトの場合、https://novel.onl/word/wp-content/uploads/site/5/2023/01/image.jpg のようなURLになります。

/site/5/ のような長い記述が気になる方は、functions.php に次のコードを記入すると、子サイトのメディアファイルは全て、メインサイトと同じフォルダに保存されます。…

WordPress カテゴリーとタグのエクスポート&インポートはWP Import Export Liteというプラグインを使うといい

WordPress カテゴリーとタグのエクスポート&インポートはWP Import Export Liteというプラグインを使うといい

WordPressを移行するのに何かのツールを使って(何だったか忘れてしまった)投稿ページをエクスポート&インポートしたが、カテゴリーとタグのslugがすべて日本語になってしまっていた(元はすべて英数字に設定していた)。All-in-One WP Migrationというプラグインはマルチサイトだと使えないし、WP All Exportというプラグインは「タクソノミーの移行は有料版買え」と言われるし、なんか簡単に移行できる無料版のプラグイン探すの大変そうだなあ…と思ったが、WP Import Export Liteというプラグインを使うと簡単にできることがわかった。既に存在するカテゴリーやタグを除いて新しいデータだけインポートしたり、既に存在するカテゴリーやタグの内容を新しいデータで書き換えたり、色々選択できる。助かった。

WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう

WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう
WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう問題、以下のシンプルなコードを利用すると細かな難点は諸々とあるがとりあえずJavascriptは表示されないので、とりあえずこれを改造した。

WordPressのデフォルトのサイト内検索を使うとleaflet関連のJavascriptの中身がずらずらと検索結果に表示されてしまう

↓Search.phpの内容(参考)

<h2><?php the_search_query(); ?>の検索結果 : <?php echo $wp_query->found_posts; ?>件</h2>
<!-- 投稿情報 loop -->
<?php if(have_posts()) : ?>
 <?php while(have_posts()):the_post() ?>
  <h3><?php the_title(); ?></h3>
  <div class="post">
   <?php if (has_post_thumbnail()) : ?>
    <p class="postThumbnail"><?php the_post_thumbnail(); ?></p>
   <?php endif; ?>
   <p><?php the_content('詳細はこちら'); ?></p>
  </div><!-- /post -->
 <?php endwhile; ?>
<?php else: ?>
 <div class="post">
  <p>申し訳ございません。
該当する記事がございません。</p>
 </div>
<?php endif; ?>


参考:検索結果テンプレート -search.php- _ WordPress – FindxFine
参考:WordPress 検索フォームを作成する _ プロカツ!
参考: 【サンプルコード付き!】wordpressで作られたサイトに検索機能を追加する方法 _ ジーニアスブログ – WEB制作会社ジーニアスウェブのお役立ちブログ

上記のコードを使うと検索結果に<P></P>タグが表示されてしまう問題が発生した。



PHPコードを下記のように変えると表示されなくなった。
<?php echo get_the_excerpt(); ?>でも良いらしい。

<?php the_excerpt(); ?>

↓からに変更

<?php remove_filter ('the_excerpt', 'wpautop'); //Pタグ削除?>
<?php the_excerpt(); ?>


参考:WordPress – 抜粋文からpタグを削除するget_the_excerpt() _ アトリエJ.

さらに全角スペース&半角スペースで検索した時に全件表示されてしまう問題を修正。



親テーマのfunctions.phpに以下のタグを追記。うちの環境(Luxeritas)では子テーマのfunctions.phpだと効かなかった。

// 空欄・スペース検索の結果を変更する関数(結果非表示)
function mycus_empty_and_blank_search_invalid_func( $search, \WP_Query $q ) {
 if ( $q->is_search() && $q->is_main_query() && ! $q->is_admin() ) {
  $s = $q->get( 's' );
  $s = trim( $s );
  if ( empty( $s ) ) {
   $search .=" AND 0=1 ";
  }
 }
 return $search;
}
add_filter( 'posts_search', 'mycus_empty_and_blank_search_invalid_func', 10, 2 );


参考:空欄検索・スペース検索を無効化する方法

以上の方法ではsearch.phpとsearchform.phpしか使わないので、以前作ったloop-thumbnail.phpが不要になった。

コアサーバーでWordPressインストールしようとしたら「データベース接続確立エラー」が出てしまった

コアサーバーでWordPressインストールしようとしたら「データベース接続確立エラー」が出てしまった
コアサーバーで新規にWordPressインストールしようとすると「データベース接続確立エラー」が出てしまう件、データベース名とユーザー名を同じにすれば良いだけだった。コアサーバーはデータベース名とユーザー名が一緒なんだっけ。忘れてた。
コアサーバーでWordPressインストールしようとしたら「データベース接続確立エラー」が出てしまった
コアサーバーで新規にWordPressインストールしようとすると「データベース接続確立エラー」が出てしまう

WordPressに2段階認証を導入してみた

WordPressに2段階認証を導入してみた
WordPressに2段階認証を導入してみた。
コアサーバー使ってるとWordPress初期インストール時に自動的にValue-Authのプラグインが導入されるけど、そのプラグインでは設定時になぜかエラーが出て使えなかった(認証コードなどを3ヶ所入れるとエラーになる)。

↓使えなかったプラグイン

Value-Auth Two Factor and Access Control – WordPress プラグイン _ WordPress.org 日本語

↓使えたプラグイン(これはWordPressの検索画面で出てこないので、下記サイトの一番下のダウンロードからzipファイルを入手して、手動でインストールした。両方のプラグインが入っていると挙動がおかしくなったので、Value-Auth Two Factor and Access Controlの方を無効化した)

Value-Auth Twofactor Login

ご利用の流れ _ Value-Auth(バリューオース)

↓参考

ご利用の流れ _ Value-Auth(バリューオース)

WordPressにSMS認証を導入するメリット・やり方 – Acceliv

Value-Auth(バリューオース)

本人認証サービス「Value-Auth byGMO」を提供開始

Value-Authは、メールなら月100通まで無料。1000通でも110円と安い。ただSMSは1通8円台と、結構高い。
「月額料金0円でSMS10通、メール100通の無料枠付き」という書き方をしているページもあり、その記述だとSMSも月10通まで無料のような印象を受けるが、SMSは初回の無料枠10回を消費したら有料プランしか選択できないのではないか?
曖昧な書き方で困惑するが、ダッシュボードの送信数カウントが来月リセットされれば月額払いということだと思うので、しばらく様子を見てみる。

WordPressに2段階認証を導入してみた

WordPressに2段階認証を導入してみた

WordPressに2段階認証を導入してみた

WordPressに2段階認証を導入してみた


私はSiteGuard WP Pluginというプラグインも使用してるんだけど、併用するとSiteGuard WP Pluginでログインした後にこんな風なメール認証の通知がくる。

WordPressに2段階認証を導入してみた

WordPressモバイル版ログインエラー

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbX4zVCn-5oiboC9Pk7Idn6gjt-9maUAXYOwoaT04jIi2cjzt3vkwLhHV_acKXTqybZzsU8ptW03V1eV_40JbQo6wPbW2XyJ9S1ThHM3FsXNNAhaT2FTHeocHtrGo04DcmIoZSsko72CRWrRemjD6ScOfHp4iIwIS2isqUrb56fVWh7I_4HjFVUFgB9zE/s400/2022-06-06_102056.png
なんかWordPressのモバイル版で「ユーザー名○○は、このサイトに登録されていません。ユーザー名が不明な場合は、代わりにメールアドレスを入力してください。」とか「不明なメールアドレスです。再確認するかユーザー名による指定をお試しください。」とか「お使いのアカウントは見つかりませんでした。アカウントをすでにお持ちの場合は、WordPress.comに連携済みであることを確認してください。」とか出るよー

パスワードのリセットを試みても登録メールアドレスが消えてるから実行できない。
WordPressモバイル版ログインエラー
WordPressモバイル版ログインエラー
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbX4zVCn-5oiboC9Pk7Idn6gjt-9maUAXYOwoaT04jIi2cjzt3vkwLhHV_acKXTqybZzsU8ptW03V1eV_40JbQo6wPbW2XyJ9S1ThHM3FsXNNAhaT2FTHeocHtrGo04DcmIoZSsko72CRWrRemjD6ScOfHp4iIwIS2isqUrb56fVWh7I_4HjFVUFgB9zE/s400/2022-06-06_102056.png
WordPressモバイル版ログインエラー
サイト内検索は時間がかかるが使えてるし、sitemap.xml見ると全ページあるみたいだけど、自動出力のサイトマップにはごく一部のページしか表示されない。データベースがいかれちゃったっぽい?
WordPress自動出力のサイトマップ

Jetpack経由でWordPressにログインしようとしたら頻繁にやり過ぎてロックかけられてしまった

Jetpack経由でWordPressにログインしようとしたら頻繁にやり過ぎてロックかけられてしまった
データベースのユーザー情報が消えてしまっているようなので、phpMyAdminのuser_loginなどを編集したりしたけど相変わらずログインできず、Jetpack経由でWordPressにログインしようとしたらあまりに頻繁にやり過ぎてロックかけられてしまった。(T_T)

Jetpack がログインページをロックしました。
お客様の IP アドレス (○.○.○.○) はセキュリティ違反の可能性があるため、フラグが立てられました。ログインのロックを解除するには、特殊リンクをメールで自分自身に送信します。
Jetpack経由でWordPressにログインしようとしたら頻繁にやり過ぎてロックかけられてしまった

WordPress マルチサイト化に関するメモ

WordPress マルチサイト化に関するメモ

WordPress、サブディレクトリ型のマルチサイト化に挑戦してみた。ネットで検索するとたくさん出てくる標準的な手順に従ってやってみたが、いくつかつまづいた点があった。

参考:WordPressでマルチサイトを作る際と、リダイレクトループが起きた時の覚書 _ WP Kyoto

まずサブディレクトリ型とサブドメイン型を選択する画面が出てこず、勝手にサブドメイン型にされてしまって困ったが、これはwp-config.phpに書き込む「define(‘SUBDOMAIN_INSTALL’, true);」falseにすることで難なく解決した。

/* マルチサイト有効化 */
define(‘WP_ALLOW_MULTISITE’, true);
define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, false); ➔サブドメイン型にする場合はtrueにする
define(‘DOMAIN_CURRENT_SITE’, ‘oo.ebb.jp’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);

あと作った子サイトの管理画面に入ろうとするとリダイレクトループが起きて何も表示されずログインできない件、これは.htaccessの書き方が悪かった。「サイトネットワークを有効化中」のところで表示されるコードを追記するのでなく、すべて上書きすることで解決した。

元の.htaccessのコード

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

↓書き換えた.htaccessのコード

<IfModule mod_rewrite.c>
# マルチサイト有効化
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>

あと子サイトのダッシュボードは表示されるのに、肝心のサイトが403 Forbiddenになって何も表示されない件、これは同じ名前のディレクトリを先に作っていたことが原因だった。当該フォルダを削除して解決。