ワードプレス奮闘記

ワードプレスのプラグインやエクセルマクロなどの忘備録代わりの奮闘記です。

Wordpressのメール投稿で使っていたプラグインをKetai entryからPostieに変更しました。

事情があってHtmlメールを送信する必要があったのですが、Ketai entryだとスタイルシートなどの余分な文字がブログに投稿されたり、リンクがうまく表示されませんでした。

Postieだと求めていた表示になりました。

マルチサイト化したWordPressにBroken Link Checkerをインストール後、ネットワークで有効化するとエラーになります。

Broken Link Checker installation failed. Try deactivating and then reactivating the plugin.
Failed to load plugin settings from the “wsblc_options” option.
Option doesn’t exist in the wp_2_options table.

Broken Link CheckerはWordPressのマルチサイトに対応していないようです。
このため、管理者ページでBroken Link Checkerを「ネットワークで停止」し、マルチサイトのプラグインページで個々に有効化するとOKです。

wordpressのwedding-bellsのテーマを使ってサイトを作っていたのですが、IE9で見ると思い切り崩れていて、サイドバーが本文の一番下に位置しています。

Firefox,Safari,Chromeでは、きっちりと表示されています。
これは困ったと、いろいろ検索をして様々な方法を試して、やっと原因がわかりました。

IE9が互換モードで表示しているからでした。

このため、ヘッダーに

< meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />

を付け加えて、やっとレイアウトがまともになりました。
くそー、解決までにどれほどの時間がかかったことか。

WordPressでブログを作った際、サイトマップを作って登録すると、グーグル等の検索エンジンに見つけてもらいやすくなります。

サイトマップはプラグインで作ると便利です。ページが何千と増えると機能しないのが多いのですが、「BWP Google XML Sitemaps」であれば大丈夫です。

作った後は、Googleウェブマスターツールに登録することによって、検索エンジンに早く見つけてもらえます。サイトを作った時には、サイトマップの登録だけでなく、「クロール」のところにある「Fetch as Google」にも必ず登録しておきましょう。

WordPressのプラグインのcsv importerは、数多くの記事を一括投稿するときにとても便利です。ただ、サーバーの関係か、一気にインポートできる記事の数が一定しません。ボリュームにもよりますが、200文字程度の記事で100~900とずいぶん幅があります。

途中で止まると管理ページが真っ白になるので、投稿一覧のページに行き、どこまでインポートされたのかを調べ、残りを再度インポートする必要があります。

気を付けたい点は、文字コードを「UTF-8」改行タイプを「LF」で保存しないと、ちゃんとインポートすることができません。

それに、日本語をインポートするときには、ダブルクォーテーションで囲む必要があります。

例:"日本語"

1行目に項目名を指定し、2行目からデータを入力していきます。僕の場合は、記事タイトル、カテゴリ、内容を投稿しています。
1行目に下記の項目で必要なものをカンマで区切って記載し、同じ順番で2行目以降にデータを記載していきます。

例をあげると、

csv_post_title,csv_post_categories,csv_post_post
"今日の仕事はパソコン","私の仕事","今日の仕事は、1日中途切れなくパソコンを打っていて、とてもハードで疲れたよ。"



csv_post_title ー 投稿のタイトル
csv_post_post ー 投稿の内容
csv_post_excerpt ー 記事の概要
csv_post_tags ー タグーの名前 カンマ(,)で区切って複数追加可能
csv_post_type ー 投稿にしたい場合「post、固定ページにしたい場合「page
csv_post_categories ー カテゴリーの名前 カンマ(,)で区切って複数追加可能
csv_post_slug ー 投稿のスラッグ
csv_post_date ー 投稿の日付。YYYY-mm-dd HH:ii:ss 指定しないとインポートした時間

メインサイトでは数千から数万記事のブログを作成しているので、投稿記事の一部を変更したいときに、WordPressのプラグインSearch Regexはとっても重宝しています。いくつ記事があろうと、簡単に置換ができるからです。

しかし、Search Regexのプラグインでは記事タイトルが置換できずに悩んでいました。

いろいろ調べてみると、どうも、プラグインの編集画面で、pst_title.phpの一部を変更する必要があるようです。下記のように変更すると、記事タイトルも変更できるようになりました。
<これを>
function find ($pattern, $limit, $offset, $orderby)
{
    global $wpdb;
    $results = array ();
    $posts   = $wpdb->get_results ($wpdb->prepare( "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID $orderby LIMIT %d,%d", $offset,$limit ) );
    if (count ($posts) > 0)
    {
        foreach ($posts AS $post)
        {
            if (($matches = $this->matches ($pattern, $post->post_title, $post->ID)))
            {
                foreach ($matches AS $match)
                    $match->title = $post->post_title;
                $results = array_merge ($results, $matches);
            }
        }
    }
    return $results;
}
<これに変更>
function find ($pattern, $limit, $offset, $orderby)
{
    global $wpdb;
    $results = array ();
    $posts   = $wpdb->get_results ($wpdb->prepare( "SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID $orderby" ) );
    if ( $limit > 0 )
        $sql .= $wpdb->prepare( " LIMIT %d,%d", $offset, $limit );
    if (count ($posts) > 0)
    {
        foreach ($posts AS $post)
        {
            if (($matches = $this->matches ($pattern, $post->post_title, $post->ID)))
            {
                foreach ($matches AS $match)
                    $match->title = $post->post_title;
                $results = array_merge ($results, $matches);
            }
        }
    }
    return $results;
}

↑このページのトップヘ