カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

「HaCkeD by SA3D HaCk3D」WordPressの改ざん

WordPressの脆弱性を突いて、記事を改竄される事態が多数発生しています。
名の知れた有名所のサイトも被害にあっているのを見ました。

当サイトでも最新記事が改竄されていました。
日時は2月5日の10時頃。

その時の状態がこちら

問題があるのはWordPressの4.7.0と4.7.1だそうです。
対策がまだの方は最新版の4.7.2にアップデートしましょう。

参考URL:WordPress の脆弱性対策について:IPA 独立行政法人 情報処理推進機構
https://www.ipa.go.jp/security/ciadr/vul/20170206-wordpress.html

0
1,113 views

XML-RPC WordPress APIで記事を投稿

The Incutio XML-RPC Library for PHP
http://scripts.incutio.com/xmlrpc/
「Download the Library」をクリックしダウンロードします。

解凍すると「php-ixr-1.7.4」というフォルダーに「IXR_Library.php」というファイルがありますので
このファイルをインクルードするだけです

ライブラリをインクルード

include_once("php-ixr-1.7.4/IXR_Library.php");

投稿先アドレスを引数としてインスタンスを生成します。

$client = new IXR_Client("http://www.example.jp/xmlrpc.php");

WordPressのユーザー名とパスワードを設定します。

$wp_username = "username";
$wp_password = "password";

投稿の処理

$status = $client->query(
    "wp.newPost", //使うAPIを指定(wp.newPostは、新規投稿)
    1,            //ブログID 通常は1、マルチサイトの場合は変更が必要
    $wp_username, //ユーザー名
    $wp_password, //パスワード
    array(
        "post_author" => 1,                        //投稿者ID 未指定の場合、投稿者名なしになります
        "post_status" => "publish",                //投稿状態
        "post_title" => "テスト投稿です。",        //タイトル
        "post_content" => "テスト投稿本文です。",  //本文
        "terms" => array("category" => array(1)),  //カテゴリ
    )
);

if(!$status){
    die("エラー! - ".$client->getErrorCode()." : ".$client->getErrorMessage());
} else { 
    $post_id = $client->getResponse(); //返り値は投稿ID
}

続きを読む…»

0
2,714 views

WordPress テーマの一覧を取得

日本語の公式リファレンスが未記入だったので、覚書の意味も含めて書きたいと思います。

WordPressにて、現在インストールされているテーマの一覧を表示する方法です。
wp_get_themesという関数を使用します。

戻り値に各テーマの情報を連想配列で返してくれますので、ループして情報を取り出すことができます。

$themes = wp_get_themes();
print_r($themes);

続きを読む…»

0
1,046 views

WordPress管理画面のサイドバーレイアウトが崩れる

Chromeで表示したWordPressの管理画面で、サイドバーメニューのレイアウトが崩れるという問題が発生しているようです。

WordPressとChromeのバージョンの組み合わせによって発生するようですが、
原因はWordPressではなくChromeの問題らしいです。
私は以下の方法で解決しました。

スリミングペイントを無効にする

Chromeでchrome://flags/#disable-slimming-paintを開きます。
「スリミングペイントを無効にする」を有効にします。
Chromeを再起動する。

0
1,257 views

WordPress ユーザー情報の取得

get_userdata関数を使用すればユーザー情報を取り出すことができます。

例)ユーザーのプロフィール情報があれば表示

$user_data = get_userdata(1);

if(!empty($user_data->description)) {
    print $user_data->description;
}

その他、取得できる情報

ユーザー名 user_login
ユーザーレベル user_level
ユーザーID ID
first_name
last_name
ニックネーム nickname
プロフィール情報 description

更に他にも取得できる情報があります。
詳しくは公式リファレンスをご覧ください。
http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_userdata

0
1,107 views

WordPress マルチサイトを元に戻す

[WordPress マルチサイト化]で紹介したWordPressのマルチサイト化ですが、今度はマルチサイトを元に戻す方法をご紹介します。
念のため、データのバックアップを取ってから行うことをお勧めします。

マルチサイト機能を解除

まず、全てのプラグインを停止します。
メインのサイト以外は消滅するので、不要なサイトを前もって削除しておきます。

マルチサイト化で変更した「wp-config.php」を元に戻します。
以下の設定を削除します。

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'www.example.jp');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

同様に「.htaccess」の設定も元に戻します。 続きを読む…»

0
3,305 views

WordPress マルチサイト化

WordPressにはマルチサイト機能が備わっており、1つのWordPressで複数のサイトを管理することができるようになっています。
ここではサブディレクトリ型でマルチサイト化する手順をご紹介します。

WordPressは既にインストール済としてご説明します。
念のため、データのバックアップを取ってから行うことをお勧めします。

※マルチサイト化はメリット・デメリットあり、元に戻すにも少し面倒なので十分検討した上で行ってください。

マルチサイト機能の導入

まず、「wp-config.php」の「/* 編集が必要なのはここまでです ! ~」の前に以下の1行を追加します。

define('WP_ALLOW_MULTISITE', true);

追加したら「wp-config.php」を上書きアップロードします。
アップロードが完了したらWordPressにログインします。

※ここで全てのプラグインを停止します。
停止していないプラグインがあると作業をすることができません。

WordPress管理画面の[ツール]に[ネットワークの設置]という項目が新たに追加されています。
それをクリックします。
「WordPressサイトのネットワークの作成」というページが表示されます。
続きを読む…»

0
1,120 views

カスタムフィールドを追加し、常に投稿画面に表示させる – WordPress

記事を新規投稿する際、プラグインを使用せずカスタムフィールドの入力欄をデフォルトで表示させる、という方法があったのでご紹介します。
自作のオリジナルテーマであることが前提です。

テーマのfunctions.phpに記述します。

admin_menuアクションフックでカスタムボックスを定義
(管理画面メニューの基本構造が配置された後に実行する)

add_action('admin_menu', 'add_custom_fields');

また、add_meta_boxesアクションフックでも可能なようです。
(投稿編集画面が読み込まれた際に実行する(バージョン3.0以降))

add_action('add_meta_boxes', 'add_custom_fields');

投稿画面にカスタムフィールドを表示するカスタムセクションを追加

function add_custom_fields() {
    add_meta_box('my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'post');
}

固定ページ投稿画面に追加する場合は

add_meta_box('my_sectionid', 'カスタムフィールド', 'my_custom_fields', 'page');

add_meta_box関数について 続きを読む…»

0
3,436 views

画像を挿入した時のタグをカスタマイズ – WORDPRESS

挿入した画像のリンクにLightbox等の属性を追加したいとき、
その都度、手作業で挿入されたタグを編集してもいいですが
自動でできれば、それに越したことはないですよね?

そんなとき、フィルターフックに自作関数をフックして挿入されるタグをカスタマイズします。
※挿入されるときに適用されるので、それまでの投稿には反映されません。

Lightboxで必要なrel属性を追加します。以下のコードをfunctions.phpに追加。

function my_image_tag( $html, $id ) {
    $html = preg_replace('/a href=/', 'a rel="lightbox['.$id.']" href=', $html); 
    return $html;
}
add_filter( 'image_send_to_editor', 'my_image_tag', 10, 2 );

続きを読む…»

0
4,737 views

WORDPRESSの子テーマを作成する

WORDPRESSでは、既存のテーマを元に子テーマを作成することができます。
最低限必要なのは、テーマの基本となるスタイルシートファイル(style.css)のみです。
あとは、スクリーンショットがあれば尚可。

まず、themesディレクトリに子テーマ用のディレクトリを作成します。
ここでは親テーマの名前を「parent」、子テーマの名前を「child」とします。

wp-content/themes/child

style.cssを作成します。

/*
    Theme Name: child
    Template: parent
*/

@charset "utf-8";
@import url("../parent/style.css");

@import url();にて親テーマのCSSファイルを相対パスを指定して読み込みます。
そして、このファイルにスタイルを記述していけば親テーマのスタイルよりもこちらが優先されます。
続きを読む…»

0
1,684 views