WP予約投稿ツイートプラグイン作り方。#php言語 #code #v2

2022.10.11

Logging

おはようございます😤 お仕事に飢えてます…寒い季節ですね…。

さて、今日は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

OFUSEで応援を送る

タグ

2, cd, Code, description, lt, mkdir, My, mytweets, name, php, plugin, plugins, Tweets, Vers, vI, WordPress, wp, wp-content, アップロード, お仕事, コメント, サーバー, それぞれ, ツイート, ディレクトリ, バージョン, ファイル, フォルダ, プラグイン, プレス, ワード, 上部, 下記, , 予約, , 今日, 任意, 作り方, 保存, 名残, 命名, 場合, 場所, 変更, 季節, , 投稿, , 言語, 記載, 説明,

VirtualBoxで共有フォルダ設定とApacheが表示されるまで。

2020.11.29

Logging

前処理としてこのコマンドを打つ。

yum -y groupinstall "Development Tools"
yum -y update kernel
yum -y install kernel-devel kernel-headers gcc gcc-c++

起動したらメニューから[デバイス]-[Guest Additions CDイメージの挿入]

mount /dev/cdrom /mnt
cd /mnt
./VBoxLinuxAdditions.run

reboot
cd /var/www/
ln -s マウント先 sf_html
gpasswd -a oreore vboxsf
gpasswd -a apache vboxsf

mount -t vboxsf -o dmode=0755,fmode=0755 (共有名) (マウント先)

reboot

Apacheのconfig設定ではリンク先はシンボルリンクを参照させとこう、これでリブートさせて完了やねん。さてこれで理解できたら、あなたは凄いです。これは単なるメモ書き記載なので、わからないと思います。

なので、参考にしたサイトのリンクを貼っときます。
http://itemy.net/?p=1355
https://www.codelab.jp/blog/?p=2587

これらでおそらく大体の人が理解できたと思います。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

-o, -s, -t, -y, 0755, A`, Additions, Apache, cd, cdrom, dev, Development, dmode, fmode, gcc, gcc-c, gpasswd, groupinstall, Guest, html, install, kernel, kernel-devel, kernel-headers, ln, mnt, mount, oreore, quot, reboot, run, SF, Tools, UPDATE, var, VBoxLinuxAdditions, vboxsf, virtualBOX, www, yum, イメージ, コマンド, デバイス, フォルダ, マウント, メニュー, 共有, 前処理, 挿入, 表示, 設定, 起動,

Tera Termで自動ログインする方法:秘密鍵有り無し対応

2019.09.14

Logging

秘密鍵有り自動ログイン

connect 'ホスト名:22 /ssh /2 /auth=publickey /user=ユーザー名 /passwd=パスワード /keyfile=秘密鍵'
wait '#'
sendln 'ls'
sendln 'cd /var/www/html'

 
秘密鍵無し自動ログイン

connect 'ホスト名:22 /ssh /2 /auth=password /user=ユーザー名 /passwd=パスワード'
wait '#'
sendln 'ls'
sendln 'cd /var/www/html'
上記の内容をテキストファイルにコピペしてホスト名、ユーザー名、パスワード、

秘密鍵(場所)をそれぞれ変更し任意の名前で保存。
保存後、拡張子をTTLへ変更。
Tera TermでTTLを呼び出すようにする方法に
ついては割愛します(ググってください)。
ちなみにこの記事、過去に書いています。
(過去記事は別のブログに移転しています)
 

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

2, 22, auth, cd, connect, html, keyfile, ls, nbsp, passwd, password, publickey, sendln, SSH, Tera, Term, TTL, user, var, wait, くだ, コピペ, それぞれ, テキスト, パスワード, ファイル, ホスト, ユーザー, ログイン, 上記, 任意, 保存, 内容, 割愛, 名前, 場所, 変更, 対応, 拡張子, 方法, 有り無し, 秘密, 自動, ,

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

2019.02.22

Logging

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php
require_once ('../../wp-load.php');
require "vendor/autoload.php";
use AbrahamTwitterOAuthTwitterOAuth;
$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);
$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

358, Abraham, access, autoload, bin, cd, com, consumer, cron, home, key, local, lt, once, php, require, secret, site, tok, tw, TwitterOAuth, use, user, usr, vendor, WordPress, wp-load, XXXXXXXXXXXX, XXXXXXXXXXXXXX, zip, クロン, サーバー, さくら, ツイート, ピックアップ, ライブラリ, ランダム, レンタル, , 割愛, 変更, 実際, 投稿, 自分, 自動, 記事, 設定, 設置, 階層,

httpingのインストール方法。centOS7

2015.07.26

Logging

httpingのインストール方法ですけど。wgetを使用してダウンロードしインストールするだけでOKです。しかし、gccがインストールされていないとエラーが出てしまいますのでgccもインストールしないといけないです。まず、gccをインストールします。その後、httpingをインストールするとすんなりとインストール出来るはずです。

yum -y install gcc
wget http://www.vanheusden.com/httping/httping-2.3.4.tgz
tar xfz httping-2.3.4.tgz
cd httping-2.3.4
make install
httping https://www.google.co.jp

ちなみにwgetがインストールされていないとダウンロードすることが出来ませんのでこちらもインストールする事もお忘れなく。

yum -y install wget

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

-y, 2.3.4, 7, cd, centOS, com, gcc, http, httping, install, Make, OK, tar, tgz, vanheusden, wget, www, xfz, yum, インストール, エラー, こちら, こと, ダウンロード, パス, , 使用, , 方法,

Photo by Kevin Ku on Pexels.com

クロンを改良しました。前のクロンPHPは恐らくBUGってて。

2015.06.23

Logging


クロンPHPって言っても月や曜日判定はしていません。今回、その判定も行うように変えようと再度、コードを改良しました。前回のコードの約半分ぐらいのコードになってます。土曜日までには、月や曜日の対応を行うようにします。
ちなみにどういう機能をするのかと言いますと、さくらサーバではクロンの制限があります。その制限数以上、使おうとおもって考えたのが、一つのPHPを叩いてクロンがしている事を模倣することでした。
※昨日の話は撤回はしないものの、SEOよりSNSでSEOという考え方に変えました。よくよく考えてみるとアクセス数が多いほど、検索上位表示される確率も増えるのでやはり大事かなとボット。ボットらしくない振る舞いしたボットなら何とか成るかも知れないとも思ってます。

追記2022/09/06:クーロン制限突破方法を記載しています、こちらを参照ください。クーロン制限突破!

command":"cd /home/user/www/user_dir/site/; /usr/local/bin/php cron.php "cron.json"
<?php
//5分刻みに対して有効な無限クローン 処理が負荷の場合どうなるかは知りません。
date_default_timezone_set('Asia/Tokyo');
class cron{

    public function d_m($obj)
    {
            if($obj->m==="*")return true;
            if(preg_match("/,/",$obj->m))return $this->comma($obj->m,date("m"));
            if((int)$obj->m === (int)date("m"))return true;

            return false;
    }

    public function d_d($obj)
    {
            if($obj->d==="*")return true;
            if(preg_match("/,/",$obj->d))return $this->comma($obj->d,date("d"));
            if((int)$obj->d === (int)date("d"))return true;

            return false;
    }

    public function d_H($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->H)){
                $H = explode("/",$obj->H);
                if((int)$H[1]>0 && ((int)date("H") % (int)$H[1])===0)return true;
            }else{
                if($obj->H==="*")return true;
                if(preg_match("/,/",$obj->H))return $this->comma($obj->H,date("H"));
                if((int)$obj->H === (int)date("H"))return true;

            }
            return false;
    }

    public function d_i($obj)
    {
            if(preg_match("/\*\/[0-9]{1,2}/",$obj->i)){
                $i = explode("/",$obj->i);
                if((int)$i[1]>0 && ((int)date("i") % (int)$i[1])===0)return true;
            }else{
                if($obj->i==="*")return true;
                if(preg_match("/,/",$obj->i))return $this->comma($obj->i,date("i"));
                if((int)$obj->i === (int)date("i"))return true;

            }
            return false;
    }

    //曜日 0=日曜日 6=土曜日
    public function d_w($obj)
    {
            if((int)$obj->w[date("w")]===1)return true;
            return false;
    }

    public  function comma($c="",$t=""){
        if($c==="")return false;
        if($t==="")return false;
        $flg = false;
        foreach(explode(",",$c) as $cc){
            if((int)$cc===(int)$t)$flg = true;
        }
        return $flg;
    }


    public function d_command($obj){
        if($obj->command){
            exec($obj->command . " > /dev/null &");
        }
        return true;
    }

}
if ($argv[1]) {
   $filename = $argv[1];
    if(is_file($filename)){
        $jsn = json_decode(file_get_contents($filename));
        $cron = new cron();
        try {
            foreach($jsn as $obj){
                if($cron->d_m($obj)){
                    if($cron->d_d($obj)){
                        if($cron->d_H($obj)){
                            if($cron->d_i($obj)){
                                if($cron->d_w($obj)){
                                    $cron->d_command($obj);//波動拳{{{{
                                }
                            }
                        }
                    }
                }
            }
        } catch (\Throwable $th) {
            print $th->getMessage();
        }
    }
}
mは月
dは日
Hは時
iは分
wは日曜日から土曜日 0はOFF、1はON
commandは実行コマンド
[
    {
        "m":"*",
        "d":"*",
        "H":"*",
        "i":"*/10",
        "w":[1,1,1,1,1,1,1],
        "command":"cd /home/user/www/user.com/site/; /usr/local/bin/php hoge1.php"
    },
    {
        "m":"*",
        "d":"12,23,28",
        "H":"*",
        "i":"*/15",
        "w":[1,1,1,1,1,1,1],
        "command":"cd /home/user/www/user.com/site/; /usr/local/bin/php hoge2.php"
    }
]

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

-Command, 06, 09, 2022, BUG, cd, ho, php, quot, SEO, SNS, アクセス, クーロン, クロン, コード, こちら, こと, サーバ, さくら, ボット, 一つ, 上位, , 今回, 再度, 判定, 制限, , 前回, 参照, 土曜日, 大事, 対応, 撤回, 改良, 方法, 昨日, 曜日, , 検索, 模倣, 機能, 確率, 突破, 約半分, 考え方, 表示, 記載, , 追記,

100の基本っていう本を買いました(´Д`)

2014.08.17

Logging

100の基本っていう本を買いました。簡単に言うとタイトルに惹かれて、そして本のデザインに惹かれて購入した本です。本の中身はまだ見ていませんが、本の表に書かれてある100番目の言葉に結構惹かれて購入を決めました。「自分の基本の更新を常に行う。」、この言葉を実践するのは結構難しいかなと思ったりしますが、納得だったので、この本は自分に合うかもと思って購入。それって実は大事で、本のプロローグとか見て、難しいそうだなとか、すんなり想像できないなぁとか思ったら買わないほうが良いです。
ちなみに自分が自己啓発の本を読む理由の一つはCDやDVDのジャケ買いとほぼ同じです、そして本の中身をちらりと見て合うと思ったら購入します。自己啓発書を読んでいて、どうこう言えない部分も出てきますけど、自分はその事については、さらっと流します。本を読むことによってのメリットは想像力を養える事と自分の考えとは違うことを説教がましくなく吸収できることです。自分は昔、本なんて読まない本なんて別にいいだよというタイプでした。キッカケは高校の時に、映画の原作を読んでみようと思ったのが最初です。それが結構ハマって、今に至るという感じですね。

著者名  @taoka_toshiaki

※この記事は著者が30代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

100, cd, DVD, こと, ジャケ買い, ソレ, タイトル, デザイン, プロローグ, まし, メリット, 一つ, 中身, , 吸収, 啓発, 啓発書, 基本, 大事, 実践, 想像, 想像力, , 更新, , 理由, 簡単, 納得, 自分, 自己, , 言葉, 説教, 購入, 部分,