WordPressの「メディアの追加」トラブル時の対処

すべてのプラグインを無効化し、同時にテーマをデフォルトのテーマに戻して再度試してみましょう。それで正常に動くなら一つずつ元に戻してみて、どれが問題を引き起こしているか絞り込むことができるはずです。 キャッシュが問題に関係している場合があります。フラウザのキャッシュを削除して再度試してみてください。また、WordPress のキャッシュプラグインを使用している場合はそれを停止し、キャッシュファイルをクリアして試してみましょう。 ログインしている場合とログインしていない場合で現象に違いが出るでしょうか。また、使用するブラウザを変えてみてはどうでしょうか。ブラウザに保存されている Cookie が関係している場合もあるので、それをクリアして再度試してみてください。

対処はたったひとつ wp-config.php に以下を追加。

define('CONCATENATE_SCRIPTS', false);

WordPress Codex日本語版によると

管理画面のスピードアップのため、JavaScript ファイルはすべてひとつの URL に連結されます。管理画面で JavaScript がうまく動作しない場合、この機能を以下のようにして無効化できます。

WordPressの管理画面のカスタマイズ

ビジュアルエディターを非表示

funsctions.phpに上記のコードを追加で、固定ページのエディター切替を

出来ないように設定する。

 

function disable_visual_editor_in_page(){ global $typenow; if( $typenow == 'page' ){ add_filter('user_can_richedit', 'disable_visual_editor_filter'); } } function disable_visual_editor_filter(){ return false; } add_action( 'load-post.php', 'disable_visual_editor_in_page' ); add_action( 'load-post-new.php', 'disable_visual_editor_in_page' );

 

自動で挿入される<p>タグを排除

remove_filter('the_content', 'wpautop');

記事を出力する the_content() 関数の前に、

remove_filter(‘the_content’, ‘wpautop’) を追加

プラグイン更新通知を非表示

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );

 テーマ更新通知を非表示

remove_action( 'load-update-core.php', 'wp_update_themes' );
 add_filter( 'pre_site_transient_update_themes', create_function( '$a', "return null;" ) );

 WordPress本体のバージョン更新を非表示

add_filter('pre_site_transient_update_core', create_function('$a', "return  null;"));

 

 

 

新着情報や更新情報を静的HTMLのトップページに表示する

既存のindex.htmlにワードプレスの新着情報や更新情報を出力する
index.htmlの一行目に以下のコードを追記。

 

<?php require_once('wp/wp-load.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

 

wordpressをインストールしたディレクトリ名が「blog」の場合

<?php require_once('blog/wp-load.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

「wp-load.php」を読み込むことでワードプレスの関数などが利用できるようになります。

新着記事を取得して静的HTMLに表示してみる。

<ul>
<?php
$myposts = get_posts('numberposts=5&orderby=post_date');
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><?php the_time('Y/m/d') ?>&nbsp;<a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>

静的HTMLでの表示が文字化けする場合【mb_convert_encoding】

<ul>
<?php
$myposts = get_posts("numberposts=5&category=&orderby=post_date&offset=0");
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>"><?php echo mb_convert_encoding(get_the_title($post->ID), 'shift_jis', 'UTF-8'); ?></a></li>
<?php endforeach; ?>
</ul>

スマートフォンでPCサイトを表示 [EC-CUBE 2.11.5]

data/class/SC_Display.php の 144行目をコメントアウトし DEVICE_TYPE_PC を返すよう定義する。

function detectDevice(){
$nu = new Net_UserAgent_Mobile();
$su = new SC_SmartphoneUserAgent_Ex();
$retDevice = 0;
if ($nu->isMobile()) {
return DEVICE_TYPE_MOBILE;
} elseif ($su->isSmartphone()) {
//return DEVICE_TYPE_SMARTPHONE;
return DEVICE_TYPE_PC;
} else {
return DEVICE_TYPE_PC;
}
}

全ての端末でPCサイトを表示したければ、端末による条件分岐をやめて、常にDEVICE_TYPE_PC を返せばよい。

function detectDevice(){
return DEVICE_TYPE_PC;
}

スマートフォンかどうかはどこで判断しているのか
data/module/Net/UserAgent/Mobile.php の 400行目付近にある isSmartphone。
$_SERVER[‘HTTP_USER_AGENT’] を取得して、各スマートフォン固有の文字列とマッチするかどうかを調べてる。

// }}}
// {{{ isSmartphone()

/**
* Checks whether or not the user agent is Smartphone by a given user agent string.
*
* @param string $userAgent
* @return boolean
* @since Method available since Release 0.31.0
*/
function isSmartphone($userAgent = null)
{
if (is_null($userAgent)) {
$userAgent = @$_SERVER['HTTP_USER_AGENT'];
}

$useragents = array(
'iPhone', // Apple iPhone
'iPod', // Apple iPod touch
'Android', // 1.5+ Android
'dream', // Pre 1.5 Android
'CUPCAKE', // 1.5+ Android
'blackberry9500', // Storm
'blackberry9530', // Storm
'blackberry9520', // Storm v2
'blackberry9550', // Storm v2
'blackberry9800', // Torch
'webOS', // Palm Pre Experimental
'incognito', // Other iPhone browser
'webmate' // Other iPhone browser
);

$pattern = implode("|", $useragents);
return preg_match('/'.$pattern.'/', $userAgent);
}

WordPressでトップページ・固定ページに最新記事リスト表示 

wordpress固定ページに最新記事リストを表示する場合、投稿欄でPHPを書き込むことが出来ないのが問題点である。
そこでwordpressプラグインを導入し、投稿(固定ページ編集画面)でPHPを書きこめるようにする。
【プラグイン】
こちらを導入する事で、wordpress固定ページ編集画面にPHPソースを書き込むことが出来るようになる。
以下のソースをwordpress固定ページの編集画面の表示させたい部分に挿入。
<ul>
  <?php query_posts('posts_per_page=5'); ?>
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <li>
  <span class="date">
  <?php the_time('Y年n月j日'); ?>
  <?php
    $days=30;
    $today=date('U'); $entry=get_the_time('U');
    $diff1=date('U',($today - $entry))/86400;
    if ($days > $diff1) {
  echo '<img src="images/new.gif" alt="New" />';
  }
  ?>
  </span>
    <a href="<?php the_permalink(); ?>"><?php the_title();?></a>
  </li>
  <?php endwhile; endif; ?>
  <?php wp_reset_query(); ?>
</ul>

ECCUBE 海外サーバーのタイムゾーン対応

EC-CUBEバージョン     2.11.5
PHPバージョン     PHP 5.2.17
DBバージョン     MySQL 5.1.66-community-log

受注日時が日本時間でなく海外の時間帯(time zone)などになってしまう場合。

 

海外のサーバーなどで、権限の都合でSQLを使えない場合の対処。

 

/data/class/SC_Query.php 内の73行目以下 3か所に
$this->conn->query(“SET time_zone = ‘Asia/Tokyo'”);
を追加したら、受注日などが修正されました。

——————————————————————-
if ($new) {
$this->conn = MDB2::connect($dsn, $options);
$this->conn->query(“SET time_zone = ‘Asia/Tokyo'”);
} else {
$this->conn = MDB2::singleton($dsn, $options);
$this->conn->query(“SET time_zone = ‘Asia/Tokyo'”);
}
if (!PEAR::isError($this->conn)) {
$this->conn->query(“SET time_zone = ‘Asia/Tokyo'”);
$this->conn->setCharset(“utf8”);
$this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC);
——————————————————————-

 

Facebookブログ記事投稿連携

WordPressで投稿したブログ記事を、Facebookに表示して連動させる。

ブログ記事を、Facebookに表示して連動させるには、Wordbookerというプラグインを使用。

FaceBookにログイン。

手順1 Wordbookerプラグインをインストール

まずは、ブログの管理画面

「プラグイン」の中の「新規追加」をクリック。

Wordbookerと入力して検索。

Wordbookerが表示されたら、「いますぐインストール」。

「プラグインを有効化」。

管理画面の左メニューの「設定」から「Wordbooker」を設定。
「Connect with Facebook」という青いボタンをクリック。

FaceBookの画面が自動で表示され「アプリへ移動」。

アプリを「許可する」。

WordPressのWordbookerの設定画面が表示され、「Reload Page」という青いボタンをクリック。

手順2 Wordbooker詳細設定の手順

 

1. 「Blog Level Settings」 一番上の「Default Publish Post to Facebook」にチェック。 「Save Blog Level Options」という青いボタンで保存。

 

 

 

 

 

 

 

 

 

 

 

 

 

2.「User Level Settings」 「Default Publish Post to Facebook」を「Yes」。 「Default Publish Page to Facebook」を「No」。 「Post to the following Wall」でブログの記事を表示したいFacebookページを選択。 チェックボックスにチェック。 「Post Attribute」 に【ブログを更新しました】 【ブログ記事の更新】など。 「Show Status for」という所で、プロフィール情報を表示したいFacebookページを選択。

設定終了。

.htaccess リダイレクト

.htaccess を用いたリダイレクト

A.htmlへのアクセスをB.phpに転送する

一定の場所に.htaccessをおくだけで A.html へのアクセスが自動的に B.php に転送されます。

.htaccess でリダイレクト

RedirectPermanent URL-path URL

使用例

ブログフォルダにあるblog.htmlをサイトのトップページにする場合

RedirectPermanent /blog/blog.html http://user-domain/index.php



EC-CUBE htmlをrootにする。htmlとdata

EC-CUBEバージョン 2.4.4
PHPバージョン PHP 5.2.6
DBバージョン MySQL 5.0.51a-community-log

早速2.4.4で試してみる。

チカッパにインストールしてみた。

require.php

define.php
/** HTMLディレクトリからのDATAディレクトリの相対パス */
define(“HTML2DATA_DIR”, “/data/“);

/** DATA ディレクトリから HTML ディレクトリの相対パス */
define(“DATA_DIR2HTML”, “../“);

公開ディレクトリ以下にdataを配置したら、ブラウザからURLでdataにアクセスできないようにする。

dataに.htaccessを置く

下記の2行を書いてdataフォルダにアップ

Order deny,allow
deny from all

これでURLをたたいてもアクセス禁止になります。

チカッパレンタルサーバーEC-CUBE メール設定

チカッパレンタルサーバーEC-CUBE メール設定

EC-CUBE
バージョン
2.4.3
PHP
バージョン
PHP 5.2.6
DB
バージョン
MySQL 5.0.51a-community-log

会員登録とお客様の注文メールが届かない

管理画面の「システム設定」→「パラメータ設定」
「MAIL_BACKEND」

ここの値を「”smpt”」から「”mail”」に変える。

他のサイトを参考にしたところ、チカッパのアカウントポート番号を変更と
ありますが、必要ありませんでした。

この一箇所を修正するだけで、メール送受信が双方上手く動きました。

*sendmailでもチカッパでは使えませんでした。

株式会社TORAT