@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
WP予約投稿ツイートプラグイン作り方。#php言語 #code #v2
2022.10.11
おはようございます😤 お仕事に飢えてます…寒い季節ですね…。
さて、今日はWP予約投稿ツイートプラグイン作り方を記載していきます。ワードプレスでプラグインを作る場合はWordPressの下記の場所に任意のフォルダを作り、その中にディレクトリ名(任意名)と同じファイル名でphpファイルを作ります。※昔の名残なので今は命名が違っても動くかも知れませんが・・・。
cd /wp-content/plugins
mkdir mytweets
vi mytweets.php
そして、命名したファイル名を開き、ファイルの上部に下記のコメントを記載します。プラグイン名やプラグインの説明、プラグインバージョンをそれぞれ変更して頂き保存、その後サーバーサイドにアップロードします(フォルダごと)。
<?php
/*
Plugin Name: My tweets
Description: tweets
Version: 1.0
*/
これで何も動作しないプラグインが出来上がります。
後はコマンドラインからプラグインフォルダにcomposerをインストールしtwitteroauthのライブラリを入れます。
此処までが前手順です。此処までで挫折した人は結構いると思います🙄。
因みに此処までの事がすんなりと出来る人は、このブログの情報は必要ないものです。なのでココからはソースコードを記載します。WP予約投稿ツイートプラグインなんてオチャノコサイサイだと思います。
<?php
/*
Plugin Name: My tweets
Description: tweets
Version: 1.0
*/
if (!defined('ABSPATH')) exit;
require_once "tw-v2-config.php";
require_once "./vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
function mytweets($new_status, $old_status, $post)
{
if ($new_status == 'publish' && $old_status != 'publish') {
try {
$connection = new TwitterOAuth(APIKEY, APIKEYSECRET, ACCESSTOKEN, ACCESSTOKENSECRET);
$connection->setApiVersion('2');
$response = $connection->post('tweets', ['text' => get_the_title($post->ID) . "\n" . get_permalink($post->ID)], true);
} catch (\Throwable $th) {
//throw $th;
}
}
}
add_action('transition_post_status', 'mytweets', 10, 3);
上記のコードを記載した上で上書き保存&アップロードします。その後ワードプレスの管理画面よりプラグインを有効にして出来上がり、今回はtwitteroauthのライブラリを使用しましたがcrulなどのを理解している人はライブラリは特に必要ないのかなとも思います。ライブラリを使用すればお手軽ですが、万が一何かあった時に困るのでライブラリを使用せずにコードを書くという方もいらっしゃると思います。
自分も極力、公式のライブラリしか使わないようにしています🙇。
トイウコデ、ワードプレスのプラグインの作り方でした。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, cd, Code, description, lt, mkdir, My, mytweets, name, php, plugin, plugins, Tweets, Vers, vI, WordPress, wp, wp-content, アップロード, お仕事, コメント, サーバー, それぞれ, ツイート, ディレクトリ, バージョン, ファイル, フォルダ, プラグイン, プレス, ワード, 上部, 下記, 中, 予約, 今, 今日, 任意, 作り方, 保存, 名残, 命名, 場合, 場所, 変更, 季節, 後, 投稿, 昔, 言語, 記載, 説明,
お店のホームページ(サイト)の作り方その参
2022.03.05
お店のホームページ(サイト)の作り方その参は下記の動画を見ていただければお店のホームページは完成できます。わからない事があれば知恵袋などで質問するとひとりで出来上がります。ちなみに動画では500円代をおすすめしていますが、100円代のサーバでも問題なく機能します、違いはデーターベースというものを使用するかどうかです。今回は静的なサイトなので100円代で十分です。
これでお店のホームページ(サイト)の作り方その参は終了します。もし自分で出来なさそうというのであればクラウドワークスなどでサーバーの設定、ファイルのアップロード、ドメインの登録などを代行でしてもらうのも一つの手なのかもしれません。値段は3万ぐらいが相場かと思います。また完了後、かならずサーバーのパスワードの設定を変更してください!。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
100, 3, 500, アップロード, おすすめ, お店, クラウド, これ, サーバ, サーバー, サイト, データー, ドメイン, パスワード, ひとり, ファイル, ベース, ホームページ, もの, ワークス, 一つ, 万, 下記, 事, 今回, 代行, 作り方, 使用, 値段, 動画, 参, 変更, 完了, 完成, 手, 機能, 登録, 相場, 知恵, 終了, 自分, 設定, 質問, 違い,
お店のホームページ(サイト)の作り方その弐
2022.03.05
おひさしぶりです。
ブログを数日休んでいました。こらからは不定期という感じでブログを書いてきます。
このブログはお店のホームページ作り方その壱の続きになります。
下記が予約ボタンと地図の作成手順です、こちらの変更部分をindex.phpのファイルを書き換えてください。予約には予約システムSelectType (セレクトタイプ)を使用しているのでアカウントを作りご自身のお店に合わして管理画面から設定してみてください。
会社の地図に関しては、GoogleMapを使用しています、こちらをindex.phpに貼り付けるのですが必要ない部分があるのでその部分を削除して貼り付けています。動画を注視してみるとわかるかと思います。
今回はここまでです。次回はさくらレンタルサーバにファイルをアップロードする方法とSSLの設定を行い完了となります。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
6, com, GoogleMap, https, index, php, SelectType, SSL, vMSy-CCthA, watch, www, youtube, アカウント, アップロード, お店, ここ, こちら, ご自身, サーバ, サイト, さくら, システム, セレクト, タイプ, ファイル, ブログ, ホームページ, ボタン, レンタル, 下記, 不定期, 予約, 今回, 作り方, 作成, 使用, 削除, 動画, 地図, 壱, 変更, 弐, 感じ, 手順, 数日, 方法, 次回, 注視, 画面, 管理, 設定, 部分,
やってみよー、フラワーズ ボミング ホーム。
2020.08.28
フラワーズ ボミング ホームとは何か?下記の引用を参照してください。
自分が描いた花をアップロードすることで、世界中の人が描いた花々と一緒に、テレビモニターのなかで咲き乱れるというもの。描いた花は、ゆっくりと幻想的に散っていき、これまで体験したことのないアートの世界を堪能できるのだとか
引用元:https://tabi-labo.com/
実際の動画がこれです。
実際、じぶんもお絵かき用のファイルをダウンロードしてのりえをしてアップロード後、ライブ配信の映像を55インチのテレビに映し出してみた。ちなみにテレビに映像を写すには別途、クロームキャストなどの機器が必要となります。感想からすると子供から大人まで楽しめる仕様になっているかなと思います。とくに子供は喜びそうですね。ぜひ、これご自宅で体験してみてください。
詳細内容はこちら
https://www.teamlab.art/jp/w/flowers_bombing_home/
https://flowers-bombing-home.teamlab.art/jp/paint
https://www.youtube.com/c/teamLabART/live
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
55, 7, com, Ep-dQ, https, tabi-labo, VO-lk, watch, www, youtube, アート, アップロード, クロームキャスト, こと, これ, これまで, ご自宅, じぶん, ダウンロード, テレビ, なか, のりえ, ファイル, フラワーズ, ホーム, ボミング, モニター, もの, ゆっくり, ライブ, 下記, 世界, 人, 仕様, 体験, 何, 別途, 動画, 参照, 大人, 子供, 実際, 引用, 必要, 感想, 映像, 機器, 絵かき, 自分, 花, 花々, 詳細, 配信,
NTTのCOTOHA API(コトハAPI)でWordPressの自動タグ生成プラグインを作ってみた。
2020.02.20
GUIはこんな感じになります。
jp-auto-tagというプラグインをYahoo!APIを使用し作っていましたが
何だか、バージョンが変わるらしくてその対応するのが…。コトハAPIで同じ感じのものを作ってみました。
面倒くさいなぁと感じたので
尚、jp-auto-tagを使用している方はjp-auto-tagを停止してjp-auto-tag2をご使用ください。また圧縮ファイルを解凍しワードプレスのプラグインフォルダにフォルダごと、アップロードしプラグイン有効にしAPIの設定すると自動タグが生成可能です。
ブログ投稿時にタグが自動生成されますので、確認の際は画面を再読み込みしてご確認ください。
尚、オプションデータは残り続けますので悪しからず?
プラグインのソースコードはこんな感じになります。
<?php
/*
Plugin Name: jp-auto-tag2
Version: 0.1.10
Description: auto jp tag2
Author: taoka toshiaki
Author URI: https://zip358.com/
Plugin URI: https://zip358.com/plugin/jp-auto-tag2.zip
*/
class jp_auto_tag2
{
public $db_option = "jp_auto_tag2";
function frm_page2()
{
add_menu_page('jp-auto-tag2', 'jp-auto-tag2', 'manage_options', __FILE__, array($this, 'show_text_option_page2'), '', 8);
}
function show_text_option_page2()
{
wp_enqueue_style('bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css', array(), '3.3.6');
wp_enqueue_script('bootstrap', 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js', array(), '3.3.6');
$options = get_option($this->db_option);
if (!empty($options)) {
$Access_Token_Publish_URL = $options["Access_Token_Publish_URL"];
$API_Base_URL = $options["API_Base_URL"];
$Client_ID = $options["Client_ID"];
$Client_secret = $options["Client_secret"];
$max_keyword_num = $options["max_keyword_num"];
}
include_once dirname(__FILE__) . '/jp-auto-tag-tmp2.php';
}
function ajax_event2()
{
$options["max_keyword_num"] = $obj["max_keyword_num"] = (int)$_POST["max_keyword_num"]<5?5:(int)$_POST["max_keyword_num"];
$options["Access_Token_Publish_URL"] = $obj["Access_Token_Publish_URL"] = $_POST["Access_Token_Publish_URL"];
$options["API_Base_URL"] = $obj["API_Base_URL"] = $_POST["API_Base_URL"];
$options["Client_ID"] = $obj["Client_ID"] = $_POST["Client_ID"];
$options["Client_secret"] = $obj["Client_secret"] = $_POST["Client_secret"];
update_option($this->db_option, $options);
print json_encode($obj);
die(0);
}
function api_tag2($post_id)
{
$cuthttp = function ($str = "") {
if (!$str) return $str;
return preg_replace("/https?:\/\/[a-zA-Z0-9|%|\?|_|=|-|\.|\/]*$/m", "", $str);
};
$post = get_post($post_id);
$title = $post->post_title;
$content = strip_tags($post->post_content);
$document = $title . $cuthttp($content);
$options = get_option($this->db_option);
if ($options["Access_Token_Publish_URL"] && $options["Client_ID"] && $options["Client_secret"]) {
$curl = function ($ptn, $options, $token = "", $token_type = "", $document = "") {
switch ($ptn) {
case "token":
$data = [
'grantType' => 'client_credentials',
'clientId' => $options["Client_ID"],
'clientSecret' => $options["Client_secret"],
];
$header = [
'Content-Type: application/json;charset=UTF-8',
];
$url = $options["Access_Token_Publish_URL"];
break;
case "tag":
$data = [
'document' => $document,
'max_keyword_num'=>$options["max_keyword_num"],
];
$header = [
'Authorization: ' . ucfirst($token_type) . ' ' . $token,
'Content-Type: application/json;charset=UTF-8',
];
$url = rtrim($options["API_Base_URL"],"/")."/nlp/v1/keyword";
break;
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$res = (object)json_decode($body, true);
curl_close($curl);
return $res;
};
$res = $curl("token", $options);
$access_token = $res->access_token;
$token_type = $res->token_type;
if ($options["API_Base_URL"] && $document && $access_token){
$res = $curl("tag", $options, $access_token, $token_type, $document);
foreach($res->result as $key=>$val){
$tags[] = $val["form"];
}
wp_set_post_tags($post_id, implode(",", array_unique($tags)), false);
}
}
}
}
$jp_auto_tag2 = new jp_auto_tag2();
add_action('save_post', array($jp_auto_tag2, 'api_tag2'));
add_action('publish_post', array($jp_auto_tag2, 'api_tag2'));
add_action('admin_menu', array($jp_auto_tag2, 'frm_page2'));
add_action('wp_ajax_ajax_event2', array($jp_auto_tag2, 'ajax_event2'));
<form id="ajax-frm">
<table class="table">
<tr>
<td>
プラグイン説明:jp-auto-tag2はapi.ce-cotoha.comのAPIを<br>
使用し投稿文を解析しキーワードをタグを抽出します。<br>
</td>
</tr>
<tr>
<td>
<a href="https://api.ce-cotoha.com/contents/index.html" target="new">https://api.ce-cotoha.com/contents/index.html</a><br>
上記のURLよりユーザー登録を行いAPI情報をそれぞれ入力ください。全て必須項目になります。
</td>
</tr>
<tr>
<td>
Access Token Publish URL:<br>
<input type="text" name="Access_Token_Publish_URL" value="<?=$Access_Token_Publish_URL?>" class="form-control">
</td>
</tr>
<tr>
<td>
API Base URL:<br>
<input type="text" name="API_Base_URL" value="<?=$API_Base_URL?>" class="form-control">
</td>
</tr>
<tr>
<td>
Client ID:<br>
<input type="text" name="Client_ID" value="<?=$Client_ID?>" class="form-control">
</td>
</tr>
<tr>
<td>
Client_secret:<br>
<input type="text" name="Client_secret" value="<?=$Client_secret?>" class="form-control">
</td>
</tr>
<tr>
<td>
抽出するキーワード(タグ数)5以上:<br>
<?php
$max_keyword_num = (int)$max_keyword_num<5?5:$max_keyword_num;
?>
<input type="text" name="max_keyword_num" value="<?=$max_keyword_num?>" class="form-control">
</td>
</tr>
<tr>
<td colspan="2"><input type="button" id="frmsubmit" value="登録する" class="form-control"></td>
</tr>
</table>
</form>
<script>
jQuery(function($){
$("#frmsubmit").on("click",function(){
var ajaxurl = '<?=admin_url( 'admin-ajax.php');?>';
var data = $("#ajax-frm").serializeArray();
data.push({name:"action",value:"ajax_event2"});
$.ajax({
type:'POST',
url:ajaxurl,
data:data,
success:function(obj){
console.log(obj);
alert("更新しました");
}
});
});
})
</script>
プラグインダウンロードはこちら
https://zip358.com/plugin/jp-auto-tag2.zip
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, API, COTOHA, GUI, jp-auto-tag, lt, name, NTT, php, plugin, WordPress, Yahoo, アップロード, オプション, コード, ことば, ご確認, ソース, タグ, データ, バージョン, ファイル, フォルダ, プラグイン, プレス, ブログ, もの, ワード, 使用, 停止, 可能, 圧縮, 対応, 感じ, 投稿, 方, 有効, 生成, 画面, 確認, 自動, 自動生成, 解凍, 設定, 際,
ガジェット好きな凄いITエンジニア、drikinさんのYOUTUBEが和む。
2020.01.31
ガジェット好きな凄いITエンジニア、 drikin (どりきん)さんのYOUTUBEはゆるくて見ていて和む。ガジェット好きの方は見ていてとても楽しいと思います。さくらレンタルサーバーさんの方とかとも帰国したときに絡んでいる?映像とかもあってすごいなぁなんて思います。
ガジェット紹介の他にもVlogも結構をアップロードしています、そちらも自分は好き、どちらかと言えば Vlog の方が人間味あふれていて見ていて楽しいなと、これ単なる人間観察的な自分の趣向が入っているだけなのかもしれませんが・・・。仲間とワイワイガヤガヤしているところとか、臨場感があってなんか、自分もその店にいるような感覚になってしまうところなど、上手いなと感じます。
どりきんさんのYOUTUBEチャンネル登録はこちらから
https://www.youtube.com/user/drikin/featured
drikinのサブ
https://www.youtube.com/channel/UCdx2hgSqR-vh9VD13O71TaQ
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-OY, 1, com, drikin, IT, iXacO, Vlog, youtube, アップロード, エンジニア, ガジェット, きん, こちら, これ, サーバー, さくら, そちら, チャンネル, とき, ところ, どちらか, どり, レンタル, 人間, 人間味, 他, 仲間, 帰国, 店, 感覚, 方, 映像, 登録, 紹介, 結構, 臨場感, 自分, 趣向,
webpに対応しましたプラグインでカバーしました。 Safariめ!!
2020.01.25
WebP Express(ウェッピーエクスプレス)というWordPressのプラグインがあるので、そちらでコンバート(変換)すれば良いのですが、大量に画像があるサイトはそれで変換できないので下記の対応方法で対応をお願いします。
1. WebP Express使用してコンバートする際に webpが生成されます。webpの生成場所を確認する。現在は下記の配下にwebp画像が作られています。
/wp-content/webp-express/webp-images/doc-root/wp-content/uploads
2.1の配下にwebpの画像を生成するために下記のコマンドを実行します。自分の場合、アップロードしている画像をリスト化して一括処理するプログラミングを実行しました。尚、cwebpがインストールされていない場合、インストールする必要があります。さくらレンタルサーバーには入っているみたいです。
cwebp -q 90 元画像名(階層を含む).png.webp -o 変換後のファイル名.webp (変換先の階層を含む)
こうすることで画像は全てwebpに変換することが可能ですが、これだけでは表示が切り替わらないので下記の画像を参照しプラグインの設定を変更してください。
ちなみにこのwebp(ウェッピー)はグーグルさんが開発したものらしいです、大体のブラウザが、こちらの webpに対応しているのですがSafariとIEは非推奨みたいなんですよね。何れwebpに対応すると思います…思いたい。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2.1, cwebp, doc-root, Express, Safari, uploads, webp, webp-express, webp-images, WordPress, wp-content, アップロード, インストール, ウェッピーエクスプレス, お願い, カバー, コマンド, コンバート, サーバー, サイト, さくら, そちら, それ, ため, プラグイン, プログラミング, リスト, レンタル, 一括, 下記, 使用, 処理, 場合, 場所, 変換, 大量, 実行, 対応, 必要, 方法, 現在, 生成, 画像, 確認, 自分, 配下, 際,
さくらレンタルサーバーでWordPressのDBバックアップを支援するPHPコード
2020.01.10
さくらレンタルサーバーでWordPressバックアップを支援するPHPコードです。
駆け出しのWEB担当者用のプログラムです、動作環境はPHP5.6以上でお願いします。バックアップする際にWARNINGが発生してしまうには対応しておりません。メールが貯まりますが大丈夫ですよ、きっと。
プログラムを読めば何を書いているのか、駆け出しのWEB担当者様もわかるとは思いますが、変更してほしいのはIDとPASS部分です?。ルートにWordPressをインストールしていない場合は $wploadfile の変更もお願いします。
ファイルをアップロードした階層に dbbackup名でフォルダを設置しそのフォルダにベーシック認証をかけておいてください。外部からダウンロードが容易に出来るので・・・。
上記の設定が完了したらファイルをアップロードし sakura-rental-wpdb-backupfullにアクセスしてください。
ログイン後、管理画面より設定を行った後、さくらレンタルサーバーのコントロールパネルよりCRONの設定を行ってください。
ダウンロードはこちらから
https://zip358.com/tool/sakura-rental-wpdb-backupfull/sakura-rental-wpdb-backupfull.zip
尚、CRON設定に関しては例を管理画面に書いていますのでそちらの参考に設定をお願いいたします、またバックアップは1週間保持します。
月曜日?日曜日まで7ファイルのMYSQL、DBのバックアップファイルが出来上がります。管理画面の曜日設定にチェックが入っていないものはバックアップ致しません。
※ソースコードは下記になります。
※2020年12月、修正しました。ソースコードは下記になります。
※wp-load.phpの階層を自身の階層に変更してください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>さくらレンタルサーバーでWordPressのDBバックアップを支援するPHPコード</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col table-responsive">
<table class="table" id="tbl">
</table>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="./assets/js/common.js?<?=time()?>"></script>
</body>
</html>
window.onload = function () {
$.ajax({
type: "POST",
dataType: "json",
url: "./lib/view.php",
data: "data",
success: function (response) {
if (response.password.ok === "ok") {
view();
} else {
passwordview();
}
}
});
};
function view() {
let str = "";
fetch("./schedule.dat").then(response => response.text()).then(data => {
let weekval = data.split(",");
let weekname =
[
{en:"Sunday",ja:"日曜日"},
{en:"Monday",ja:"月曜日"},
{en:"Tuesday",ja:"火曜日"},
{en:"Wednesday",ja:"水曜日"},
{en:"Thursday",ja:"木曜日"},
{en:"Friday",ja:"金曜日"},
{en:"Saturday",ja:"土曜日"}
];
if (weekval.length === 7) {
for (var i = 0; i < 7; i++) {
let weekvalflg = weekval[i] == 1 ? " checked " : "";
str += `
<tr>
<td>${weekname[i].ja}</td>
<td>
<div class="form-check">
<input id="${weekname[i].en}_chk" class="form-check-input" type="checkbox" name="" value=1 ${weekvalflg}>
<label for="${weekname[i].en}_chk" class="form-check-label">バックアップする</label>
</div>
</td>
</tr>
`;
}
} else {
for (var i = 0; i < 7; i++) {
str += `
<tr>
<td>${weekname[i].ja}</td>
<td>
<div class="form-check">
<input id="${weekname[i].en}_chk" class="form-check-input" type="checkbox" name="" value=1>
<label for="${weekname[i].en}_chk" class="form-check-label">バックアップする</label>
</div>
</td>
</tr>
`;
}
}
str += `
<tr>
<td colspan="2"><button class="btn btn-primary" id="btn" type="button">設定する</button></td>
</tr>
`;
document.getElementById("tbl").innerHTML = str;
document.getElementById("btn").addEventListener("click", function () {
$.ajax({
type: "POST",
url: "./lib/backup-setting.php",
data: {
Sunday: document.getElementById("Sunday_chk").checked?1:0,
Monday: document.getElementById("Monday_chk").checked?1:0,
Tuesday: document.getElementById("Tuesday_chk").checked?1:0,
Wednesday: document.getElementById("Wednesday_chk").checked?1:0,
Thursday: document.getElementById("Thursday_chk").checked?1:0,
Friday: document.getElementById("Friday_chk").checked?1:0,
Saturday: document.getElementById("Saturday_chk").checked?1:0
},
dataType: "json",
success: function (response) {
if (response.ok == "ok") {
alert("設定しました");
} else {
alert("失敗しました");
}
}
});
});
});
}
function passwordview() {
document.getElementById("tbl").innerHTML = `
<tr>
<td>wordpress Id</td>
<td>
<div class="input-group">
<input class="form-control" type="text" id="wpid" placeholder="ワードプレスのIDを入力ください" aria-label="ワードプレスのIDを入力ください" aria-describedby="wpid">
</div>
</td>
</tr>
<tr>
<td>wordpress pass</td>
<td>
<div class="input-group">
<input class="form-control" type="password" id="wppass" placeholder="ワードプレスのPassを入力ください" aria-label="ワードプレスのIDを入力ください" aria-describedby="wppass">
</div>
</td>
</tr>
<tr>
<td colspan="2"><button class="btn btn-primary" id="btn" type="button">ログインする</button></td>
</tr>
`;
document.getElementById("btn").addEventListener("click", function () {
$.ajax({
type: "POST",
dataType: "json",
url: "./lib/pass.php",
data: { wpid: document.getElementById("wpid").value, wppass: document.getElementById("wppass").value },
success: function (response) {
if (response.password.ok === "ok") {
view();
} else {
alert(response.password.msg);
passwordview();
}
}
});
});
}
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5.6, db, dbbackup, ID, pass, php, sakura-rental-wpdb-backupf, WARNING, web, WordPress, wploadfile, アップロード, インストール, お願い, コード, サーバー, さくら, ダウンロード, バックアップ, ファイル, フォルダ, プログラム, ベーシック, メール, ルート, レンタル, 上記, 何, 動作, 名, 場合, 変更, 外部, 完了, 容易, 対応, 担当者, 支援, 環境, 発生, 設定, 設置, 認証, 部分, 階層, 際, 駆け出し,
WordPressのメディアライブラリについて愚痴る。
2020.01.08
過去のデータベースを引き継いでいればメディアライブラリのデータは
壊れないが、途中でXMLなどデータをインポートすると
メディアライブラリでは管理出来なくなってしまう。
これを呼び戻すには Add From Server やmedia from ftpなどのプラグインを
使用して呼び戻すしか無いようだと思っていたが、唯これをしてしまうと
いささか問題があるので使えない。
このプラグインは基本的に新規で構築する際に
画像をFTPで一先ず一括アップロードして使用する場合などに対しての
プラグインである物なのでいささか違う。
なので今回、自分で自作しようと思っていたが、、、
特に過去の画像を編集するつもりもないので辞めた。
ちなみにメディアライブラリの画像はwp_postsとwp_postmetaに
保存されている。
下記のURLを見て昔、これでトラブルになった事を思い出した。
WordPressで画像はどのようにデータベースに記録されているか
上記のようなことから、データベースの画像の欠損を復元するのは
正直なところ面倒。投稿データには大体、データは残っているのだが
メタデータが欠損していてメディアライブラリに表示されないということが
殆どだと思うが、このメタデータを復元するのは至難、なぜなら
投稿データって使っているIDとメタデータのIDのリンクを上手く結びつける
事ができないからとてもエンジニア泣かせである。
要するにメタデータIDの方が以前使っていたIDを別の要素のIDが
使っていたりして…。
これを整理しながら元に戻すのは非常に至難だと言うこと。
なので、結論を言えばちゃんとデータベースのバックアップ取りましょう?
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Add, from, FTP, media', postmeta, posts, SERVER, url, WordPress, wp, xml, アップロード, インポート, これ, つもり, データ, データベース, トラブル, プラグイン, メディア, ライブラリ, 一括, 下記, 事, 今回, 使用, 保存, 問題, 場合, 新規, 昔, 構築, 物, 画像, 管理, 編集, 自作, 自分, 記録, 途中, 過去, 際,
SF好きならおすすめYOUTUBEチャンネル
2019.11.28
SF好きならおすすめYOUTUBEチャンネルDUST[ダスト]です。こちらのYOUTUBEチャンネルはSFショートムービーが数多くアップロードされています。
どれもハイクオリティの作品が多いように思えます。凄いなと言う印象を受けました。
DUSTチャンネルはこちらになります。
https://www.youtube.com/channel/UC7sDT8jZ76VLV1u__krUutA
DUSTの動画予告を貼っときますね。
興味のある方は是非、作品の視聴をどうぞ。
ちなみに2019年11月時点で登録者数145万人でかなり多いです、、、。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 11, 145, 2019, 7, 76, 8, channel-, com, DUST, https, jZ, krUutA, sDT, SF, UC, VLV, www, youtube, アップロード, おすすめ, かなり, こちら, ショート, ダスト, チャンネル, どれ, ハイクオリティ, ムービー, 万, 予告, 作品, 動画, 印象, 数, 方, 時点, 登録者, 興味, 視聴,
WordPressの404外部リダイレクトプラグインを作りました。
2019.11.16
WordPressの404外部リダイレクトプラグインを作りました。
ソースコードはこんな感じになってます、、、。
使用される方は下記のURLよりダウンロードを行ってください。
解凍してフォルダをワードプレスのpluginを置く場所へアップロードし
page404goプラグインを有効にしていただければ使用できます。
https://zip358.com/plugin/page404go.zip
<?php
/*
Plugin Name: page404GO!!
Plugin URI: https://zip358.com/plugin/page404go.zip
Description: 404ページを任意のURLへ変換し遷移させる
Author: taoka toshiaki
Version: 1.0
Author URI: https://zip358.com/
*/
add_action( 'wp', function() {
global $wp;
$domain = get_option('domain404page')?get_option('domain404page'):"https://zip358.com/";
if(is_404()){
wp_redirect($domain.$wp->request);
exit;
}
});
add_action('admin_menu','page404go_setting');
function page404go_setting(){
add_options_page(
'zip358.com:プラグイン',
'404リダイレクト設定',
'administrator',
'page404go',
function(){
if(isset($_POST["domain404page"])){
if(preg_match("/https?://.*/$/",$_POST["domain404page"])){
$url = $_POST["domain404page"];
}elseif(preg_match("/https?://.*/",$_POST["domain404page"])){
$url = $_POST["domain404page"]."/";
}else{
$url = "https://zip358.com/";
}
update_option('domain404page', wp_unslash($url));
}
?>
<form method="post" action="">
<h2>リダイレクトドメイン指定</h2>
<input type="text" style="width:350px" name="domain404page" value="<?=get_option('domain404page')?get_option('domain404page'):""?>" placeholder="https://zip358.com/">
<?php submit_button(); ?>
</form>
<?php
}
);
}
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1195254834632380416, 358, 404, Author, com, description, go, lt, name, page, php, plugin, status, taoka, toshiak, Twitter, URI, url, WordPress, zip, アップロード, コード, ソース, ダウンロード, フォルダ, プラグイン, プレス, リダイレクト, ワード, 下記, 任意, 使用, 場所, 変換, 外部, 感じ, 方, 有効, 解凍, 遷移,
gitとかgithubとかgitlabを一通り勉強して
2019.06.02
gitとかgithubとかgitlabを一通り勉強して
githubやgitlabは遠隔でプロジェクト組んで開発する人以外には
必要ないような気がします。
確かにGUIでほぼ面倒な手順は消えてなくなります。
gitとは何かバージョン管理と言われます、
簡単に言えばファイルの世代管理です。
githubやgitlabは何か、リポジトリ管理です。
リポジトリ管理とはなにか、簡単に言えば
バージョン管理を集約したものを管理するものと思ってください。
リポジトリというものを管理したいディレクトリの配下に
置くことでその中のファイルはコマンド打てば
管理下に置くことが出来、世代管理が可能になるということ
ただ、それだけの事です。
ローカルで管理していたものをリモートに置く場合、
プッシュ=アップロード。ダウンロードしたい場合は
プルという事。管理したいファイルはアッドする。
コミットをした時点でファイル履歴となる等など…。
複数人で開発する場合は
グールプを作りその中にユーザを作成し
ローカルからリモートへ接続を行えば良い…
これぐらい覚えとけば良いかなと後はブランチ機能なども
ありますが、この機能を使用すると複雑怪奇になりそうな気がします。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
git, github, gitlab, GUI, アッド, アップロード, こと, コマンド, コミット, それだけ, ダウンロード, ディレクトリ, バージョン, ファイル, プッシュ, プル, プロジェクト, もの, リポジトリ, リモート, ローカル, 世代, 中, 事, 人, 勉強, 可能, 場合, 手順, 気, 管理, 簡単, 遠隔, 配下, 開発, 集約, 面倒,
香南市みなこい港まつり花火2018に行ってきましたよ。
2018.08.06
香南市みなこい港まつり花火2018に行ってきましたよ。
写真ではなく動画で撮影しました。
ほぼノーカットでいっさい編集していません。
それをまるごと、YOUTUBEにアップロードを行いました。
動画の撮影にはお友いらないし、彼女もいらない、
ひたすらiPhoneで撮影しました。
暗いのであまりひと目は気にならなかったですが撮影していて、そういや彼女と花火見たことないなとか思いつつ凹んでいました。
こんな事ばかりしているから、彼女が出来ないだと思う半面、ひとりが楽だなとも感じますが、やはり彼女がいればなぁとは思いますw
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
iPhone, w, youtube, アップロード, いっさい編集, お友, ノーカット, ひとり, ひと目, 写真, 動画, 半面, 彼女, 撮影, 気, 花火, 香南市みなこい港まつり花火2018,
FuelPHPをサクラレンタルサーバー共有で動かすには?
2016.07.14
FuelPHPをサクラレンタルサーバー共有で動かすには?
どうしたら良いのかを記述しときます。
\fuel\app\config\config.phpに記述されている’base_url’の所を
base_url’ ?=>’http://任意.com/’,かbase_url’ ?=>’任意の階層’にします。
オプションでいろいろと変更できる点はありますが、今回はスルーします。
(FuelPHPの日本公式サイトを参照)
次にルートの直下に.htaccessを作成し下記の内容を記述しアップロードを行なってください。
RewriteEngine on
RewriteBase /public
RewriteRule (.*) /public/$1
この段階ではルートにアクセスしても表示されません。表示させるためには
\public.htaccessの.htaccessファイルを一部変更してあげる必要があります。
まず、RewriteBase /publicを追加しOptions +FollowSymLinks -Indexesと
記載されている部分をコメントアウトする必要があります。
これらの事をするとルートURLでFuelPHPの初期の表示がされるようになります。
いろいろなサイトを拝見しましたが、結構設定を変更しないといけないよと書かれていますが、実際はコレだけの設定変更で表示することは可能です。ちなみに余談ですがオプション値のココだけは変更したら良いかなという
所を記載します。
/**
* Localization & internationalization settings
*/
'language' => 'ja', // Default language
'language_fallback' => 'ja', // Fallback language when file isn't available for default language
'locale' => 'ja_JP.UTF-8', // PHP set_locale() setting, null to not set
/**
* Internal string encoding charset
*/
'encoding' => 'UTF-8',
/**
* DateTime settings
*
* server_gmt_offset in seconds the server offset from gmt timestamp when time() is used
* default_timezone optional, if you want to change the server's default timezone
*/
'server_gmt_offset' => 0,
'default_timezone' => 'Asia/Tokyo',
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, App, base, com, config, fuel, FuelPHP, htaccess, http, ON, php, public, Rewrite, RewriteBase, RewriteEngine, RewriteRule, url, アクセス, アップロード, いろいろ, オプション, サーバー, サイト, さくら, スルー, ため, ファイル, ルート, レンタル, 一部, 下記, 今回, 任意, 作成, 公式, 共有, 内容, 参照, 変更, 必要, 所, 日本, 段階, 点, 直下, 表示, 記述, 階層,
さくらレンタルサーバでC言語をコンパイルして動かす方法(^@^)!!
2016.01.26
さくらレンタルサーバでC言語をコンパイルして動かす方法。
テキストエディタなどでC言語を記述しFTPでファイルを
任意のディレクトリへアップロードします。
次にアップロードした任意のファイルをコンパイルすれば
コンパイルされたファイルが生成されます。
手順は下記です。
1.サンプルプログラム&ファイル(hoge.c)を作成。
#include <stdio.h> int main(void) { int i; for(i=0;i<7;i++){ printf("HELLO %d.\n", i); } return i; }
2.FTPソフトでさくらレンタルサーバへアップロード(スタンダード以下だと機能せず!?)
3.アップロードした任意のファイル場所まで移動する。(pwdコマンドやcdコマンドを活用)
4.コンパイルする。
gcc -g hoge.c -o hoge
5.コンパイルしたファイルを実行。
./hoge
追記:コンパイル等はTera Termなどを使いコンパイルを行ってください。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
$i<, AM, C言語, g hoge.c, gccプログラミング, int i, int main, Linuxプログラミング, printf, pwdコマンド, return i, stdio.h>, アップロード, コンパイル, さくらレンタルサーバ, サンプルプログラム&ファイル, ディレクトリ, テキストエディタ, ファイル, めちゃくちゃ,
WinSCPというソフトが有るのだけど。
2015.07.16
WinSCPというソフトが有るのだけど自分はこのソフト、FTPのソフトだと思い込んでいたけど・・。SCPという名前の通りSCP(転送プロトコル)機能がついてたりする。面倒くさい事をさらっとやってくれるフリーソフトなわけです。そうとは知らず今までインストールすることが無かったんですけど、この度、インストールしました。ちなみに何が良いかというとFTPサービスをサーバ環境へインストールしなくてもファイルのアップロードが可能だということです。FTPがインストールされていない環境だととても重宝しそうな気がします。
ダウンロードはこちらから、WinSCP
メモがてらにもう一つ、大量のsqlデータを一括でインポートしなくてはならなくなり、昨日、調べていたらこのようなコマンドで解決することがわかりました。まず、Linuxサーバでかつポート22番が開いている事が前提です。windowsですとTera Termでサーバにログインし下記のコマンドを入力します。
mysql -u ユーザー名 -D データベース名 -p
//エンター後、Passwordの入力を行ってください。
次にMYSQLに切り替わったら、下記のコマンド入力してインポートを行います。この時の注意点ですがエラーなどが出る場合はエクスポートしたsqlファイルの最終行あたりに記入されているデータベース名やユーザー名が移行する側の名前になっているかが大事になります。なっていない場合、修正をかけ再処理を行うとインポートが行えるはずです。 尚、サーバ上に事前にsqlファイルをアップロードして置いてから処理を行ってください。
USE データベース名(インポートしたい)
SOURCE 階層を含むファイル名(/xxxx/xxxx.sql)
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
22, FTP, Linux, My, SCP, SQL, Tera, Term, Windows, WinSCP, アップロード, インストール, インポート, こちら, こと, コマンド, サーバ, サービス, ソフト, ダウンロード, データ, ファイル, フリー, プロトコル, ポート, メモ, もう一つ, ログイン, 一括, 下記, 事, 何, 入力, 前提, 可能, 名前, 大量, 度, 昨日, 機能, 気, 環境, 自分, 解決, 転送, 通り, 重宝,
[解決]さくらサーバでファイルの一覧(Index of)が見えてしまって困っています。
2015.05.17
さくらサーバでファイルの一覧(Index of)が見えてしまって困っていますを解決する方法。これを解決するにはindex.htmlファイルをディレクトリの中に置くことで解決します。ちなみにindexファイルを使いたくない場合は、下記のように記入することで解決します(htaccessファイルを作成し、下記のコードを記入し保存、ディレクトリにアップロード)。
DirectoryIndex 任意のファイル名
上記のように記入するとそのファイル名がディレクトリの中になければ、ファイル一覧が表示されるようになります。ちなみに、さくらサーバでは初期の設定で下記のファイル名がファイル一覧を非表示にさせるファイル名となっています。
- index.html
- index.htm
- index.shtml
- index.cgi
- index.php
- index.hdml
※共有サーバーで、複数のドメインを管理している方は/home/アカウント名/www/の中にはindex.htmlなどを入れておいた方が良さそうですね。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
DirectoryIndex, htaccessファイル, index.cgi, index.hdml, index.html, index.htmlファイル, index.php, index.shtml, indexファイル, アカウント名, アップロード, コード, さくらサーバ, ディレクトリ, ドメイン, ファイル一覧, ファイル名, 上記, 下記, 共有サーバー, 初期, 複数, 解決,
さくらのVPSを使ってみた。標準OSインストールは初心者におすすめ。
2015.04.04
さくらVPSを使ってみた。さくらVPSをレンタルして標準OSインストールしてみました。インストール後、root権限でログインしてApacheをインストール(yum install httpd )してみたら、そのままの状態でWEBが表示された・・・・。ポートの開放とかの設定はしなくても良かったです。標準OSのセキュリティの設定でゴニョゴニョされていて特にWEBで使う分にはiptablesを触らなくても良さそうでした。インストール後、phpをインストールしてhttpdのconfig設定を変更して再起動すればphpが実行できる環境になりますから、あとはMysqlをインストールしたい方は、インストールしてゴニョゴニョ設定するだけでWEB環境を整います。あとは、ftpを使用したい方はインストール(yum install vsftpd)すれば良いだけです。FTP経由かSSH経由でコードをアップロードすればサイトを構築できてしまいます。
著者名 @taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Apache, config, FTP, httpd, install, iptables, MYSQL, OS, php, root, SSH, VPS, vsftpd, web, yum, アップロード, あと, いま, インストール, おすすめ, コード, ゴニョゴニョ, サイト, さくら, さくらの, セキュリティ, そのまま, ポート, レンタル, ログイン, 使用, 再起動, 分, 初心者, 変更, 実行, 方, 構築, 標準, 権限, 状態, 環境, 経由, 表示, 設定, 開放,