<?php
/*
Plugin Name: 俺のブログカード
Plugin URI:
Description: 主にブログカードを作成
Version: 1.0.0
Author: yagi
Author URI: https://ansize.net/
License: GPL2
*/
function set_yobc_table() {
global $wpdb;
$table_name = 'yagi_out_blog_card';
// ブログカードのプレフィックス+テーブル名
$rtn = $wpdb->prefix . $table_name;
return $rtn;
}
global $table_that_yagi_out_blog_card;
$table_that_yagi_out_blog_card = set_yobc_table();
require_once("out_blog_card.php");
// 管理画面でプラグインが有効化されたときに呼び出す
register_activation_hook( __FILE__, 'add_yagi_out_blog_card_cache_table' );
// 管理画面でプラグインが停止されたときに呼び出す
register_deactivation_hook( __FILE__, 'dll_yagi_out_blog_card_cache_table' );
function yagi_out_blog_card_add_init(){
// CSS登録
wp_register_style('oreno_bc', plugins_url('css/main.css', __FILE__));
wp_enqueue_style('oreno_bc');
}
add_action('wp_enqueue_scripts', 'yagi_out_blog_card_add_init');
add_action( 'admin_menu', 'yagi_out_blog_card_admin_setting' );
function yagi_out_blog_card_admin_setting() {
add_menu_page(
'俺のブログカード', // メニューページのタイトル
'俺のブログカード', // メニュー名
'administrator', // メニューの権限
'yagi_setting_blog_card', // メニューのスラッグ
'yagi_out_blog_card_main_admin' // function コールバック関数
//'', アイコンURL
//'' 表示位置
);
}
function yagi_out_blog_card_main_admin() {
echo '<h1>ブログカードキャッシュ管理画面</h1>';
?>
キャッシュの削除設定などをここで行う<br />
テーブルをここに出力する<br />
ページネーションができればなおよし<br />
<?php
echo "<h2>ワードプレス使用中php画像処理ライブラリ: ". _wp_image_editor_choose(). '</h2>';
yagi_out_blog_card_admin_main_disp();
}
// https://propansystem.net/blog/2017/09/11/post-1022/
/**
* メイン表示画面
*/
function yagi_out_blog_card_admin_main_disp() {
if ( $_SERVER['REQUEST_METHOD'] === 'POST' &&
wp_verify_nonce($_POST['yagi_blog_card_nonce'], 'yagi_blog_card-nonce') ) {
if (isset($_POST['edit'])) {
// 下記のような作りになっている
// id => string '削除'
yagi_out_blog_card_edit_db( key($_POST['edit']) );
} elseif (isset($_POST['delete'])) {
yagi_out_blog_card_delete_db( key($_POST['delete']) );
}
}
//データ一覧
echo <<< EOL
<form action="" method="post">
<h2>データ一覧</h2>
<div class="wrap">
<table class="wp-list-table widefat striped posts">
<tr>
<th nowrap>ID</th>
<th nowrap>fav</th>
<th nowrap>URL・タイトル</th>
<th nowrap>アイキャッチ</th>
<th nowrap>編集</th>
<th nowrap>削除</th>
</tr>
EOL;
global $wpdb;
global $table_that_yagi_out_blog_card;
$tbl_name = $table_that_yagi_out_blog_card;
$sql = "SELECT * FROM {$tbl_name} ORDER BY id;";
$rows = $wpdb->get_results($sql);
$yagi_blog_card_nonce = wp_create_nonce('yagi_blog_card-nonce');
echo '<input type="hidden" name="yagi_blog_card_nonce" value="'.$yagi_blog_card_nonce.'" />';
foreach($rows as $row) {
echo "<tr>";
echo "<td>" . $row->id . "</td>";
echo '<td><img src="' . esc_attr( change_yagi_out_blog_card_db_pic($row->favicon)[0] ) . '"></td>';
echo "<td>" . $row->time . "<br />" . $row->title . "<br />" . $row->url . "</td>";
echo '<td><img src="' . esc_attr( change_yagi_out_blog_card_db_pic($row->pict)[0] ) . '"></td>';
echo "<td>";
echo "<input type='submit' name='edit[" . $row->id . "]'";
echo " class='button-primary' value='更新' />";
echo "</td><td>";
echo "<input type='submit' name='delete[" . $row->id . "]'";
echo " class='button-primary' value='削除' />";
echo "</td>";
echo "</tr>";
}
echo "</table>";
echo "</div>";
echo "</form>";
}
function yagi_out_blog_card_edit_db($id) {
global $wpdb;
global $table_that_yagi_out_blog_card;
// idから情報を抜き出す
$query = $wpdb->prepare("
SELECT *
FROM $table_that_yagi_out_blog_card
WHERE id = %d
LIMIT 1
", intval($id));
$results = $wpdb->get_results($query);
if (empty($results)) {
return false;
}
$results = $results[0];
// プラグインの衝突を防ぐ
// OpenGraphクラスが定義されていない場合にのみ1回だけ読み込む
if (!class_exists('OpenGraph')) { require_once 'OpenGraph.php'; }
// OGP情報を取得
$graph = OpenGraph::fetch($results->url);
$screenShot = $graph->image ? $graph->image : 'https://s.wordpress.com/mshots/v1/'. urlencode(esc_url(rtrim( $results->url, '/' ))) .'?w='. $img_width .'&h='.$img_height.'';
$add_img = yagi_out_blog_card_file_get_contents($screenShot);
//ファビコンを取得(GoogleのAPIでスクレイピング)
$host = parse_url($results->url)['host'];
$searchFavcon = 'https://www.google.com/s2/favicons?domain='.$host;
$favi = file_get_contents($searchFavcon);
$wpdb->update(
$table_that_yagi_out_blog_card,
array(
'time' => current_time('mysql'),
'title' => $graph->title,
'content' => $graph->description,
'pict' => $add_img,
'favicon' => $favi,
),
array( 'ID' => $id )
);
}
function yagi_out_blog_card_delete_db($id) {
global $wpdb;
global $table_that_yagi_out_blog_card;
$wpdb->delete( $table_that_yagi_out_blog_card, array( 'id' => $id ), array( '%d' ) );
}
// クイックタグを挿入したい
// http://wpcj.net/1597
// https://bibabosi-rizumu.com/simplicity-customize-tags/#toc6
function yagi_out_blog_card_add_quicktags() {
// code...
}
?>
コメント