phpエラー(function.phpのカスタムポスト追加の記述で)

Filed under: functions.php,php,wordpress — kdcs @ 19年8月9日 金曜日

WordPress カスタムポストのパーマリンク(アンカータグ)に
「Notice: Only variables should be assigned by reference in」というエラーが出て
カスタムポストの記事にアクセスできないという状況。

php5からphp7への移行で出るっぽいという記事があったが、エラーが出た環境はphp5.6
何故か他のWordPressサイトではエラーは出ない・・・

修正箇所は、function.php内、カスタム投稿タイプ「○○○」のパーマリンク設定
参照渡しで値を配列に渡している部分

$post = &get_post($id);

これを以下に修正

$post_tmp = get_post($id);
$post = $post_tmp;

さらに、function.php内、一覧にカスタムフィールドの「お名前」を追加

echo attribute_escape($stitle);

attribute_escapeは非推奨とのことでesc_attr()を使用

echo esc_attr($stitle);

※追記 2021年10月9日
php 7.4環境でWordPress 5.7.2を使ったサイト制作時(眼鏡店)にデバッグモードで上記の状態発生
修正の記述で解決。

Twitterの自作シェアボタンに使う記述-2019年3月

Filed under: php,Twitter — kdcs @ 19年3月16日 土曜日

Twitterのシェアボタンへの記述が旧式?の場合、IEでボタンをクリックすると404エラーになる
※firefoxやChrome、windows7のie11では問題ない

IEやEdgeでも動作させるための記述(WordPressにてliタグ使用)

<li class="sns_btnInner"><a class="twitter" href="https://twitter.com/intent/tweet?url=<?php echo urlencode(get_permalink()); ?>&amp;url=<?php echo urlencode(get_permalink()); ?>&amp;text=<?php echo urlencode(the_title("","",0)); ?>&amp;hashtags=<?php echo urlencode("ハッシュタグ1,ハッシュタグ2"); ?>" target="_blank" rel="noopener noreferrer" title="Twitterで共有"><i class="fa icon-twitter"></i>Twitter</a></li>

基本 https://twitter.com/intent/tweet? からurl text hashtags を&でつなぐ
url=パーマリンク
text=ページタイトル
hashtags=ハッシュタグ(複数の時は,で区切る)

※それぞれurlencodeが必要

xampp1.8.3のPHPを5.5.15を7.1.6にバージョンアップする

Filed under: php,xampp — kdcs @ 19年3月9日 土曜日

ロリポップサーバがPHP7.1に対応(2017年2月9日)しているのでテスト環境にもPHP7を導入
最新のxamppもPHP7になっているがデータベースがmariaDBなので旧xampp(mySQL)のPHPを
バージョンアップする(5.5.15から7.1.6)

PHP7.1.6はxampp7.1.6からコピー

PHP5.5からPHP5.6の時はPHPフォルダ内のphp_curl.dllをコピーして完了したが
PHP5.5からPHP7.1ではapache内のファイルも修正が必要になる

C:\xampp\apache\conf\extra\httpd-xampp.confのコピーを取っておく
httpd-xampp.confファイル内のphp5の記述をphp7に修正する

これでxamppを起動すると
「序数387がダイナミックライブラリSSLEAY32.dllから見つかりませんでした」
というエラーが出る

PHP7ではOpenSSL1.0.2以降のバージョンが必要らしく
C:\xampp\apache\bin\内のlibeay32.dllとssleay32.dllをOpenssl1.0.2用にしなければならない

xampp7.1.6はそもそもPHP7なので上記の2ファイルをxampp1.8.3内コピーしてみたが
apacheが起動しなくなってしまった

ネット上の情報を頼りにOpensslダウンロードサイトから1.0.2を取得し
フォルダ内からlibeay32.dllとssleay32.dllをxampp1.8.3のapache\bifフォルダ内にコピーした。

これでxamppを起動するとエラー無く使える

【追記 2019.3.18】
windows10では上記の方法でxamppが起動したがwindows7ではxampp1.8.3でphp7.1は起動時に
「libssh2.dllがない」というエラーが発生する

暫定措置(この方法でよいのか不明)として、phpフォルダ(中見はphp7.1)
php/ext/php_curl.dllをひとつ上の階層へ移動する
php/php_curl.dll

これで起動時のエラーはなくなる(windows7にて)

xampp1.8.3のPHPを5.5.15を5.6.21にバージョンアップする

Filed under: php,xampp — kdcs @ 19年3月5日 火曜日

ロリポップのサーバーで利用できるPHPが最近では7系と5.6になっているので
ローカル環境も合わせる必要があるがxamppはデータベスがmariaDBに変更されている

mysqlのままの環境でテストを行うためxampp1.8.3のPHPを5.5.15から5.6.21に
バージョンアップさせる

ダウンロードサイトからxampp5.6.21-zipを入手し解凍

xampp1.8.3のphpフォルダをphp5.5にリネームしておく
解凍したxampp5.6.21からphpフォルダをxampp1.8.3にコピーする

php5.5にリネームしたフォルダ内から\xampp\php\ext\php_curl.dllをコピーする

以上で完了

サーバーにzipファイルをアップロードして解凍する方法

Filed under: php,wordpress — kdcs @ 19年2月2日 土曜日

ロリップサーバーへzipファイルから解凍したWordPressのファイルをアップロードすると
途中で通信が切断されることがある。

何度も再アップロードしなければならないのでWordPressのzipファイルをそのままアップロードして
ロリポップサーバー内で解凍する。

unzip.phpを作成しwordpressのzipファイルと同じディレクトリにアップロードする

<?php
$zipfilename = 'wp499.zip'; // 展開するzipファイルを指定。
$zip_file = getcwd().'/'.$zipfilename;
 
if(!is_file($zip_file)) exit("No zipped file: $zip_file on your server!");
 
function unzip($zip_file){
 return shell_exec("unzip $zip_file");
}
 
if($zip = unzip($zip_file)){
 echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>ZIP解凍</title></head><body>';
 echo "Zip解凍<br />\n";
 echo "対象ファイル:$zipfilename<br />\n";
 echo '<div style="overflow:auto; height:400px; border: #999 1px solid; margin:15px;">';
 echo "<pre>$zip</pre></div>\n";
 echo "$zipfilename: は正常に解凍されました。<br />\n";
 echo '</body></html>';
} else{
 echo("Failed to extract: $zip_file\n");
}
?>

ブラウザからhttp://hogehoge.com/unzip.phpへアクセスすると解凍される
WordPressの場合はzipファイル名にかかわらず、wordpressというファイルが作成される

サイト内検索

カテゴリー

最近の投稿

↑上に戻る