WordPressの翻訳プラグインBogoでリンクエラー

Bogoをアップデートしてv3.3にしたところ日本語<->英語のリンクが表示されないケースがあった。
(ショートコードので表示している部分)
固定ページの一覧を見ると英語、日本語共にドキュメントは存在している
英語ページの言語の部分を見ると

このような表示で元のページとのリンクが切れているようだ。

言語の編集部分のアップデートがあったようで以前の言語表示の部分とは違っていた。

取り急ぎ、前のバージョンに戻してしのぐ事とする。

前のバージョンはプラグインディレクトリから探すことができる

Bogo

https://ja.wordpress.org/plugins/bogo/advanced/&#8221;
このページの一番下の部分

指定するバージョンはアップデートする前のバージョーンが良い
(なお、他のプラグインなどでセキュリティアップデートなどの場合はプラグインの利用を停止するなど検討が必要)

/plugins/ディレクトリの前のプラグイン(bogo)を削除するかリネームして
いつもプラグインのアップロード方法を行うか

コンソールで
$plugins mv bogo bogo_bak
$wget https://downloads.wordpress.org/plugin/bogo.3.2.zip
$unzip bogo.3.2.zip
などとしてプラグインのダウングレードを行う。

とりあえずは前のバージョンに戻った。(根本的解決ではないので、アップデートを待つかソースコードを見てみる時間を取らないと、、、)

Notice: has_cap の使用はバージョン 2.0 から非推奨になりました ! プラグインやテーマでのユーザーレベルの使用は推奨されていません。代わりに権限グループと権限を使ってください。 in wp-includes/functions.php on line 3318

WordPressのプラグインを有効にした場合に標題のエラーが出た場合。管理画面に何も表示されないという時は疑ってください。(メッセージはwp-config.phpでdebug=trueにしないと表示されませんが)

ちなみに私は久しぶりにプラグイン作るのにcodexからコピーして作ろうとして発生しましたがw

「Notice: has_cap の使用はバージョン 2.0 から非推奨になりました ! プラグインやテーマでのユーザーレベルの使用は推奨されていません。代わりに権限グループと権限を使ってください。 inwp-includes/functions.php on line 3318」

エラー内容のfunctions.phpが原因では無く追加した(作成した)プラグイン側の問題ですので、無効にするか修正してください。

恐らく

add_options_page(‘Test Options’, ‘Test Options’, 8, ‘testoptions’, ‘mt_options_page’);
このようにaccess_level/capabilityの部分が8のように数字指定されているかと思います。古いプラグインには残っているかもしれません。

これは古い記述の仕方なのでadministratorなどと置き換えてください。

※最新になってない部分は英語版を参考にしましょう。

http://wpdocs.sourceforge.jp/%E7%AE%A1%E7%90%86%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%AE%E8%BF%BD%E5%8A%A0

http://wpdocs.sourceforge.jp/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E6%A8%A9%E9%99%90#.E7.AE.A1.E7.90.86.E8.80.85

WordPressからSMTP(Google Apps 二段階認証)

WordPressからSMTPにてメールの送信を行う場合、WP Mail SMTPを利用すると便利です。

通常は

 

SMTP:smtp.google.com

 

WP Mail SMTP 設定画面
WP Mail SMTP 設定画面

SMTP:smtp.google.com

SMTP Port:465

Username:xxxxx@gGoogleAppsのドメイン

Password:GoogleAppsのパスワード

で送信が出来ますが、GoogleApps側で二段階認証を行っている場合は通常のパスワードでは送信出来ません。

送信に利用するユーザでログインした状態で

https://www.google.com/settings/security

Google Appsのセキュリティ設定にてアプリ パスワードの設定を選択してください。

 

次の画面でアプリパスワードの設定を行います。

画面の下の方のリストボックスで選択をします。

端末を選択で「その他」を選択し、名前を入力します。この名前は適当でいいですが仮にWordPressとでも入力しておきましょう。

 

生成を押すと黄色い枠の中にアプリパスワードが表示されます。

このパスワードを先ほどのWP Mail SMTPの設定画面のユーザパスワードの部分に設定してください。

設定後はその下にあるテストで実在するメールを入力してみてください。

メールが届かず、結果画面でfalseが表示されたらメールの送信は失敗です。

Google Appsのポリシーや、ユーザアカウントの設定等も再度確認してください。

 

 

Chrome snifferがAppspectorに変更

chromeでそのサイトがWordPress使っているかとかNginx使ってるとか知るのに便利な

Chrom sniffer、そういえば最近反応していないなと思って管理画面で見てみると

snifferの文字では反応しなかった、検索してみるとAppspectorに変わったようで、ダッシュボードにもAppspectorというのが存在した。

有効になっているがWordPressのサイトを見ても反応しないので

一旦ゴミ箱で削除をしてから

 

https://chrome.google.com/webstore/detail/appspector/homgcnaoacgigpkkljjjekpignblkeae?hl=ja

再度chromeに追加したところ有効になった

 

 

 

 

 

 

WordPressのTOPページがリロードしまくる。

WordPressのページがリロードを繰り返しループしていた。

Codexによると
“もしループをテンプレート以外の自分のデザインで使っている場、WP_USE_THEMES を false に設定します。 “と記載されている。
<?php define(‘WP_USE_THEMES’, false); get_header(); ?>

これをテーマの該当テンプレートのget_header()なとこに設定で解決!

http://wpdocs.sourceforge.jp/The_Loop

WordPressの子テーマでのJquery読込

jqueryやその他のJSファイル等を独自に読みこむ場合

[php]

<?php

wp_enqueue_script(‘jquery’);
wp_enqueue_script(‘lightbox’, get_stylesheet_directory_uri() . ‘/jquery/js/jquery.lightbox-0.5.js’, array(‘jquery’));
wp_enqueue_script(‘read_jquery’, get_stylesheet_directory_uri() . ‘/jquery/js/readjq.js’);
wp_enqueue_style(‘lightbox-css’, get_stylesheet_directory_uri() . ‘/jquery/css/jquery.lightbox-0.5.css’);
wp_head();

[/php]

このようにget_stylesheet_directory_uri()を使用する

blog_info(‘template_url’)を使用すると親テーマのディレクトリからの読込となる。

ちなみに上記の例の配置したディレクトリは

/wp-content/themas/テーマ名/jquery/

またwordpress内ではJSの$が処理出来ないため

js内の$をjQueryやJQuery等に変換して読み込ませることで、動作可能となります。

lightboxをwordpressと共に上記方法で使用する場合、画像が表示されない場合がある。

上記/jquery/の配下にjsとimagesディレクトリを作成した場合。

jquery.lightbox-0.5.jsの30行目あたりを

[javascript]

imageLoading: ‘/wp-content/themes/two/jquery/images/lightbox-ico-loading.gif’, // (string) Path and the name of the loading icon
imageBtnPrev: ‘/wp-content/themes/two/jquery/images/lightbox-btn-prev.gif’, // (string) Path and the name of the prev button image
imageBtnNext: ‘/wp-content/themes/two/jquery/images/lightbox-btn-next.gif’, // (string) Path and the name of the next button image
imageBtnClose: ‘/wp-content/themes/two/jquery/images/lightbox-btn-close.gif’, // (string) Path and the name of the close btn
imageBlank: ‘/wp-content/themes/two/jquery/images/lightbox-blank.gif’, // (string) Path and the name of a blank image (one pixel)
// Configuration related to container image box

[javascript]

とすると表示されるようになる

nginx+php-fpm+wordpress

マルチサイトで運用中のWordPressサーバが重くなってきたので、nginxの導入を行いました。

cent OSに入れるのでyumでインストールします。remiのリポジトリ使います。

現在はApacheとphpで動いています。

$sudo yum -y install nginx php-cli php-fpm –enablerepo=remi

インストールが完了したら

/etc/nginx/nginx.confを編集

バーチャルドメインの場合は/etc/nginx/conf.d/以下にapacheの設定のようにヴァーチャルドメインを追加する。
conf.d以下がnginx.confに読み込まれるので、拡張子は.confにする必要がある
    # Load config files from the /etc/nginx/conf.d directory
    include /etc/nginx/conf.d/*.conf;
こんな感じで読み込まれるため

/etc/nginx/conf.d/example.com.confとか
server {
    #WordPressマルチサイト
    listen 80;
    server_name example.com www.example.com example.net www.example.net;
    access_log /var/log/nginx/access_log;
    error_log /var/log/nginx/error_log;

    index index.php index.html;
    location ~ .*.php$ {
        root /var/www/example/htdocs;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
  //パーマリンク
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    //マルチサイト
    rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
}

もしCLI版を有効にしていなければ、php.ini等でapc.enable_cli=1を追記してください。

/etc/php-fpm.d/www.conf

user=nginx; group=nginx;
userとgroupはwordpressのディレクトリパーミッションにより
柔軟に対応してください。
uploads等を777にしている場合はどのユーザでもOK
apacheユーザやnobodyユーザへのみ書き込みを開けているユーザに変更する(擬似apache化w)
server_tokens off;
等の設定を行う。
/etc/rc.d/init.d/httpd stop /etc/rc.d/init.d/nginx start /etc/rc.d/init.d/php-fmp

これで起動 nginxでwordpressが動きます。

参考サイト

さくらのVPS CentOSでサーバ構築 21 – Nginx
楽しく情報処理技術者試験

 

 

WordPress3マルチサイトでアイキャッチ

バージョン3になってから、アイキャッチが使えるようになりました。
(その前はサムネイル表示)
3.1になってさらに便利になっているはずなのですが

先日移行したWordPressのページ達の右下に
アイキャッチの枠出て来ません、、、、

function.phpに
add_theme_support( ‘post-thumbnails’ );
と書いたり
twntyelevenの子テーマにしてみたりしてたのですが

http://ja.forums.wordpress.org/topic/6391
フォーラムのy-nishiさんの発言で回答発見!

右上のネットワーク管理者になって
左下の設定>メディア>メディアのアップロードのところで画像にチェック
これで各ページ、投稿にアイキャッチ枠が表示されるようになりました。

wordpress日本語URLの設定

パーマリンクにて/%postname%/等を設定すると
404 Not Foundになってしまう場合がある
これを解決するためには
htaccessに
php_flag mbstring.encoding_translation off
php_value default_charset “UTF-8″
を設定する必要がある(文字コードにあわせて)

参考:Powershift

これでも日本語タイトルのページはnot foundになってしますので
この場合書くページのスラッグをアルファベット表記にして
回避することが可能

WordPress プラグインのアップデートにssh2

ssh2を利用するとwordpressのアップデートが便利になります。

phpでssh2を有効にする必要があります

yum -y install openssl-devel

# wget http://surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-1.0.tar.gz
# tar zxf libssh2-1.0.tar.gz

# cd libssh2-1.0/

# ./configure

# make

# make install

pecl install ssh2

php.iniに
extension=ssh2.soを追加

$ cd ~/
$ ssh-keygen
$ cd .ssh
$ cp id_rsa.pub authorized_keys
$ cd ~/
$ chmod 755 .ssh
$ chmod 644 .ssh/*

このキーをwordpressに設定することで
実行可能となる

さらないwp-config.phpに

define(‘FTP_PUBKEY’,’/home/ユーザ名/.ssh/id_rsa.pub’);
define(‘FTP_PRIKEY’,’/home/ユーザ名/.ssh/id_rsa’);
define(‘FTP_USER’,’user1′);
define(‘FTP_PASS’,”);
define(‘FTP_HOST’,’localhost’);

を追加するとプラグインのアップデートで接続情報を聞かれなくなる