PHP-ファイル操作・読み書きアップロードダウンロードまとめ【WordPress】2018年3月13日

WordPressの管理画面上でファイル操作をするためのPHPメモ。

まずは、フォームから、


↑こんな感じのファイルをアップロードするためのフォームを作るためのHTMLは、


<form enctype="multipart/form-data" method="post" action="__URL__">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="upload" type="file" />
<br >
<input class="tech_up_button" type="submit" value="ファイルを送信" /></form>
enctype=”multipart/form-data”   ←ここが重要です。
次に上のフォームでファイルを送信した場合の受け取り方です。
methodは、postになっていますが、$_POSTではなく$_FILESで受け取ります。


$file  =  $_FILES[‘upload’];
var_dump($file);
var_dump()するとこんな感じです↓
array(5) { [“name”]=> string(10) “date-2.txt” [“type”]=> string(10) “text/plain” [“tmp_name”]=> string(14) “/tmp/phpjgHJO4” [“error”]=> int(0) [“size”]=> int(12621) }
これはテキストファイルの例ですが、本文全体を見たい場合は、file_get_contents()を使えば1発です。

$contents  = file_get_contents($file["name"]);
上のようにいけばできると思いましたが、正解は下の方です。

$contents  = file_get_contents($file["tmp_name"]);
これで、$contentsにはテキストファイル内の文章が無事納められています。

ファイルの書き込み

メモ書き程度なので参考にはなりません。。

//ファイルを書き込みモードで開く
$file = fopen("port_date.txt", "w");
// ファイルに書き込む
$byte = fwrite($file,$strings); 
// ファイルを閉じる
fclose($file);

$byteには書き込みされた文字列のバイト数が入ります。

My Tech Item managerプラグインのアイテム(投稿)データ移行方法【WordPress】2018年3月12日

My Tech Item managerで登録したアイテムの情報を別のサイトでも再利用したい!という場合

WordPressサイトの投稿記事などをコピーする場合には、管理画面左側メニューにある「ツール」を利用します。

まずは、データのエクスポート

「管理画面」→「ツール」→「エクスポート」をクリックします。

「すべてのコンテンツ」を使用しても良いですが普通の投稿記事まですべてのデータがエクスポートされてしまうので、プラグイン「Item manager」のデータのみをコピーしたい場合は、上の図のように「Item manager」のみを選択し「エクスポートファイルをダウンロード」をクリック!

xml形式のファイルがダウンロードされます。

お次はインポート!

「管理画面」→「ツール」→「インポート」をクリック。

上の図のように「WordPress」の箇所を探します。最初は他の項目と同じように「今すぐインストール」となっているのでそちらをクリック!

すると上図のようになるので、「インポーターの実行」をクリックします。

下図が開いたら先ほどのxml形式のファイルを選択して「ファイルをアップロードしてインポート」をクリック!

次の画面ではコピーするデータ(投稿)の投稿者を割り当てます。しっかり選択してください!

「実行」を押せば完了です。

 

画像データのコピーは別途

 

投稿データに含まれる画像データについては参照先のURLのみなので、今度は画像(メディア)データのコピーを行います。

先ほどと同じように、「管理画面」→「ツール」→「エクスポート」をクリックします。

画像(メディア)データの場合は上図のようにメディアをクリック!

ただし、プラグイン内に含まれる画像データのみを選択することはできないので、画像(メディア)をデータアップロードした期間(日付)を指定してコピーします。

インポートの方法は、先ほどのアイテム(投稿)データの時とほとんど同じですが、最後の投稿者を選ぶページにて、、

上図のように「添付ファイルをダウンロードしてインポートする」に印を付けてから「実行」を押してください。

 

以上、終了。

>>>他のItemManagerも見てみる

jQuery slickスライダー実装メモ2018年2月26日


 

<link rel="stylesheet" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.css"/>
<link rel="stylesheet" href="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick-theme.css"/>

<?php  wp_head();  ?>

</head>
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.slick/1.6.0/slick.min.js"></script>

<body>




wp_head();の前でスタイルシートを読み込む。

wp_head();のあと、</head>のあと、<body>タグの前でslick.min.jsファイルを読み込む。




jQuery(function(jQuery){

jQuery('.slider-for').slick({
  slidesToShow: 1,
  slidesToScroll: 1,
  arrows: false,
  fade: true,
  asNavFor: '.slider-nav'
});
});

jQuery(function(jQuery){

jQuery('.slider-nav').slick({
  slidesToShow: 3,
  slidesToScroll: 1,
  asNavFor: '.slider-for',
  dots: false,
  arrows: false,
  centerMode: true,
  focusOnSelect: true
});
});

jQuery(function(jQuery){

jQuery('.slide_selector').slick({
  dots: true,
  infinite: true,
  speed: 500,
  fade: true,
  cssEase: 'linear'
 });
});


//TOPのスライダー画像
jQuery(function(jQuery){

jQuery('.slide_top').slick({
  fade: true,
  autoplay: true,
  autoplaySpeed: 3000,
  dots: true,
  infinite: true,
  speed: 500,
  cssEase: 'linear',
  arrows: false
 });
});




テーマのjsファイルに上記のような感じでHTMLに記述したclass(.)またはid(#)を指定してjQueryの記述をする。

HTML↓(//TOPのスライダー画像の方)



 <ul class="slide_top">
 <li><img src="/hogehoge.jpg"></li>
 <li><img src="/hogehoge.jpg"></li>
 <li><img src="/hogehoge.jpg"></li>
 </ul>



参考サイト

参考:http://cly7796.net/wp/javascript/plugin-slick/

WordPressテーマ作成メモ2018年2月24日

WordPressテーマ作成時の覚書

テーマフォルダ内の画像を表示させる場合

相対パスではダメなので、



src="'get_template_directory_uri().'/images/example.jpg'"

のように関数を使用して絶対パスで画像のURLを参照する。
「images」というフォルダは何でも良いわけだが、「img」としてしまうと表示されなかったです。
(こんなことは、常識なのかもしれませんが..私はここでハマってしまいました。)

WordPressメディアアップローダー自作時にハマったのでメモ2018年2月24日

メディアアップローダー機能を装着したい..だけど、jQueryが..



jQuery(function() {
		var custom_uploader = wp.media({
			title: 'Choose Image',
			library: {type: 'image'},
			button: {text: 'Choose Image'},
			multiple: false
		});
 
		jQuery("#media-upload").on("click", function(e) {
			e.preventDefault();
			custom_uploader.open();
		});
		
		custom_uploader.on("select", function () {
			var images = custom_uploader.state().get('selection');
 
			images.each(function(file) {
				jQuery("#image-url").val(file.toJSON().url);
				jQuery("#image-view").attr("src", file.toJSON().url);
			});
		});

	});



このようなjsを用意したのですが、jQueryがうまく読み込まれません。
以前にもjQueryには何度も悩まされてきましたが、今回は単純な理由でした。

wp_enqueue_media();

というメディアアップローダーのスクリプトを読み込む関数を書き忘れていました。(こちらはPHPの関数です。)

参考にしたサイト

・メディアアップローダーについて

WordPress 3.5の新メディアアップローダーを自作プラグインやテーマに組み込む。

メディアライブラリの表示方法(Ajaxウインドウ編)

・管理画面にメニューを追加
https://qiita.com/konweb/items/330f735a899e448ef876

・PATHやURLの取得関数
http://oxynotes.com/?p=8590

WordPress プラグイン作成メモ2018年1月23日

 

プラグインに最低必要なファイル・記述

//の行はなくても大丈夫だが、一般的にある

/*
Plugin Name: (プラグインの名前)
//Plugin URI: (プラグインの説明と更新を示すページの URI)
//Description: (プラグインの短い説明)
//Version: (例 1.0)
//Author: MyTechnics
//Author URI: (プラグイン作者の URI)
//License: (ライセンス名の「スラッグ」 例: GPL2)
*/
more »

WordPressのメディアライブラリが表示されない時の対処法メモ2018年1月8日

WordPressのメディアライブラリが表示されない時の対処法メモ

 

KAGOYAのサーバーでWordPressを使用したところ、なぜかメディアライブラリーが表示されないという現象が起きてしまいました。「admin-ajax.php」をいじくったらなおったのですが、その後、WordPressをアップロードしたところ、またメディアライブラリーが表示されなくなってしまったので、次回のアップデート時のために対処法をメモです。
more »

WordPress 固定ページごとにテンプレート化うまくいかなかったメモ2017年11月25日

WordPress 固定ページごとにテンプレート化うまくいかなかったメモ

 

WordPressの固定ページをテンプレート化する方法は簡単で、検索すればいろいろ案内ページが出てくるが、少しつまずいてしまったのでメモしておきます。

 
more »