WordPressに関する記事

WordPressプラグインなしでサイトマップ.xmlを作る方法
3,646 views

WordPressプラグインなしでサイトマップ.xmlを作る方法

WordPress

WordPressでプラグインを使わずsitemap.xmlタイプ(ロボット用)のサイトマップを作りたいと思います。このサイトは記事が少ないのでまだまだ要らないとは思いますが、今日は重い腰を上げて作ってみます!!   なるべくプラグインを使わずにテーマを作りたい派なので、現在使っているプラグインも2個しかありません。先ほどパーマリンクの変更をしたので、泣く泣く前回記事でも取り上げたPermalink Redirectを使ったので2個になりましたが、通常はWP Multibyte Patchのみで運営しています。 なぜ、WP Multibyte Patchを使っているかは次回、記事で取り上げたいと思います。   それでは本題に戻りますが、Google Search Consoleなどクローラー用のサイトマップは、Google XML SitemapsやPS Auto Sitemapなどのプラグインですぐに対応できますが、なるべくプラグインを使いたくない事と、過去に何度も不都合で動かなくなったり、設定が面倒だったりで苦い思い出があります。(単純に使い方の問題かも?)   特に面倒な設定も要らずに、sitemap.xmlを自分好みにするコードがこちらです。   function sitemap_xml() { date_default_timezone_set('Asia/Tokyo'); $sitemap = ''; $sitemap .= '' .esc_url(home_url('/')). ''.mysql2date("Y-m-d", get_lastpostmodified(), false).'daily1.0'; $args = array( 'posts_per_page' => -1, 'orderby' => 'modified', 'order' => 'DESC', 'post_type' => array('post','page'), 'post_status' => 'publish' ); $the_query = new WP_Query( $args ); while ( $the_query->have_posts() ) : $the_query->the_post(); $sitemap .= '' . get_permalink( $post->ID ) . '' .get_the_modified_date("Y-m-d"). 'weekly0.9'; endwhile;wp_reset_postdata(); $cat_data = get_categories();foreach($cat_data as $value){ $sitemap .= '' . get_category_link($value) . '' .mysql2date("Y-m-d", get_lastpostmodified(), false). 'weekly0.5'; } $tag_data = get_tags();foreach($tag_data as $value){ $sitemap .= '' . get_tag_link($value->term_id) . '' .mysql2date("Y-m-d", get_lastpostmodified(), false). 'weekly0.5'; } $sitemap .= '' . "\n"; $fp = fopen( ABSPATH. "sitemap.xml", 'w' ); if ($fp) { fwrite($fp, $sitemap); fclose($fp); }} add_action( "publish_post", "sitemap_xml" ); add_action( "publish_page", "sitemap_xml" );   functions.phpに、このコードをコピペでいけると思います。 functions.phpに、張る前には必ずバックアップを取ってからご使用ください。   圧縮版ですので、見難いですが仕様としては、投稿や固定ページを公開もしくは更新した際に、ドメイン直下(ルート直下)にsitemap.xmlが作られます。 カスタム投稿がある場合は、上記のコードの13行目のarrayに’post’,’page’,’カスタム投稿’追加すれば表示されます。   初期設定のパーマリンク(?p=)とドメイン直下にアクセス権限が無い場合は、動作しませんので変更が必要となります。 年別・月別・日別に関しては、サイトマップに表示されません。 changefreqやpriorityに関しては、お好みで変更をしてください。   簡単なXMLタグの説明 loc ページの URL です。 lastmod ページの最終更新日です。時間は省略可。 changefreq ページの更新頻度で、(always・hourly・daily・weekly・monthly・yearly・never )左から更新頻度が高い順に並んでいます。 priority URL の優先度で、0.0 ~ 1.0 までの値を指定します。全て1.0に指定すると効果がなくなるので、メリハリのある設定をしてください。 詳しくはこちらから sitemaps.org   コードの詳しい説明と仕様 1.トップページは、全体に投稿・更新などがあった場合に日付が更新されpriority:1.0,changefreq:weeklyになります。 2.投稿・固定ページは、公開された記事の更新日順で表示されpriority:0.9,changefreq:weeklyになります。 3.カテゴリ・タグは、トップページと同じく全体に投稿・更新などがあった場合に日付が更新され、priority:0.5,changefreq:weeklyになります。  

WordPress MySQLで特定の値をもつレコードのみエクスポートする
1,001 views

WordPress MySQLで特定の値をもつレコードのみエクスポートする

WordPress

MySQLで特定の値をもつレコードのみエクスポートする方法をご紹介します。 普段なかなか使う事が無いかもしれませんが、不動産・通販関係のサイトでレコードが大量にある場合などに使われたりすると思います。今回は、WordPressで特定のカスタムフィールドだけをエクスポートしてみます。   mysqldump -u ユーザー名 -pmysqlのパスワード データベース名 テーブル名 -t --where="カラム名 LIKE '特定の値'" > /var/wp_postmeta.sql(保存先を指定)   実際使用した方法です。 mysqldump -u ユーザー名 -pパスワード example.com wp_postmeta -t --where="meta_key LIKE 'GroupId'" > /var/wp_postmeta.sql wp_postmetaのmeta_keyにGroupIdがあるレコードをエクスポートさせています。   このコマンドは、カスタムフィールドに関わらず応用が出来るので便利ですが、実際に作業する際はバックアップをしてから行ってください。

WordPress パーマリンク(URL)変更後 一括でリダイレクトする方法
3,947 views

WordPress パーマリンク(URL)変更後 一括でリダイレクトする方法

WordPress

サイトのリニュアルに伴い、パーマリンクの変更をする事になりました。記事数が多くまとめて変更できる簡単で楽な方法はないかと探していたのですが、一件毎に設定する方法はあるのですが、まとめて出来るいい方法が見つからず、半ば諦めていたところに希望に近いプラグイン「Permalink Redirect」を発見!!   ダウンロードはこちらから Permalink Redirect   心配だったのがこのプラグインが古いので、現在のWordPressバージョン4.5.2に利用できるかが心配でしたが、今のところ問題なく動いているので大丈夫だと思います。 WordPressの公式サイトからは入手できないので、上記のサイトからダウンロードして使って下さい。     ダウンロード後、サーバーにアップロードする前にダウンロードしたプラグインのファイルの中に、ylsy_permalink_redirect.phpがあるので、そのファイルの406行目付近にある$status=302を$status=301に編集します。プラグインのファイルは1個なのですぐに分かります。 ファイルを編集後、サーバーのpluginsにアップロード。   それでは、肝心な設定方法です。   Permalink Redirectの設定方法   プラグインのページで「Permalink Redirect」を有効にしてください。   有効にした後に、設定の項目にPermalink Redirectが追加されているのでクリックして設定画面へ。     設定方法はとても簡単で、旧パーマリンクの構造を入力して保存するば設定は完了です。 おつかれさまでした♪ 最後は念のために確認してくださいね!   パーマリンクを変更したいけど面倒だなって思っている人も多いいと思うので、そんな方は是非使ってみて下さい。

WordPress MySQLでIDを連番に振り直す(詰める)には?
4,619 views

WordPress MySQLでIDを連番に振り直す(詰める)には?

WordPress

はじめは気になりませんが、WordPressに限らずデーターベースを使用していると、削除などでIDが飛んでしまう現象が起きてしまいます。 パフォーマンスにも影響が出たりする場合もあるみたいなので、できれば連番に振り直したいですよね?そんな時に自力で番号を振り直しても、自動で新しく振り直された番号が飛んでいたりします・・・完全にいたちごっこ状態になってしまいます。   そんな時に、MySQL・phpMyAdminで以下のコマンドで解決しますが、必ずバックアップを取ってからやってみて下さい。   SET @i := 0 ; UPDATE wp_options SET option_id = (@i := @i +1) ;   上記のコマンドは、WordPressのwp_optionsを連番に振り直したものです。wp_optionsとoption_idの部分を変えてください。 この状態でoption_idは連番になりますが、新しく登録されるIDは古いIDの最後の番号からになるので、最後に新しく振り直したIDの最後の番号を入力します。   ALTER TABLE wp_options AUTO_INCREMENT =250 AUTO_INCREMENTの部分に新しく振り直したIDの最後の番号を入力。   これで終了なので、最後に確認してみて下さい。 他にも一度カラムを削除して、入れ直す方法があるのですが色々面倒なので、今回のやり方が一番シンプルに振り直す方法だと思います。   他にもMySQLでIDを連番に振り直す方法があれば教えてください!!