Kuinka lähettää automaattisesti yksi blogiviesti sosiaalisiin verkostoihin? Universaali ratkaisu IFTTT:n ja Crontabin kanssa
Viestien säännöllinen lähettäminen sosiaalisiin verkostoihin auttaa lisäämään sivuston liikennettä tehokkaasti, esim. Facebook, Twitter, Tumblr. On varmasti hyvä, jos voimme automatisoida tämän prosessin. IFTTT :n ja crontabin käytön ansiosta tämä on helppoa.
IFTTT Maker Channel
Maker-kanava IFTTT:ssä voidaan laukaista "vastaanottamalla verkkopyyntö", ja se tukee enintään kolmea parametria eli arvo1, arvo2 ja arvo3 JSON -muodossa. Voit esimerkiksi kutsua SayHi-tapahtuman kahdella parametrilla {"arvo1″:"Hei","arvo2″:"Computing"}.
curl -X POST -H "Content-Type: application/json" -d '{"value1":"Hello","value2":"Computing"}' <a class="vglnk" target="_blank" href="https://maker.ifttt.com/trigger/{SayHi}/with/key/REPLACE_KEY" rel="nofollow"><span>https</span><span>://</span><span>maker</span><span>.</span><span>ifttt</span><span>.</span><span>com</span><span>/</span><span>trigger</span><span>/{</span><span>SayHi</span><span>}/</span><span>with</span><span>/</span><span>key</span><span>/</span><span>REPLACE</span><span>_</span><span>KEY</span></a>
Lähettäminen sosiaaliseen verkostoon IFTTT:n kautta
On yksinkertaista luoda uusi sovelma (IFTTT- sääntö) Makerin ja valitsemasi sosiaalisen verkoston, esim. Facebookin, avulla. Sinun on myös määritettävä tapahtuman nimi, jotta Maker toimii (joka on IFTTT:n "tämä" osa).
maker-vastaanota-web-pyyntö
Sitten sinun on määritettävä toiminto (joka on IFTTT :n "se" osa ).
arvo1-, arvo2- ja arvo3-parametrien valmistaja-konfiguraatio
Automaattinen PHP-skripti
Nyt voimme kirjoittaa PHP-skriptin automatisoimaan tämän: valitse viesti (esim. satunnainen tai tunnuksella), jota ei ole lähetetty viimeisten esim. 90 päivän aikana, laita linkki tietokantaan ja kutsu Maker-kanava, joka käynnistää säännön. lähettääksesi valitsemaasi sosiaaliseen verkostoon.
Jos valitsemme WordPressissä satunnaisen viestin, PHP-skripti on jotain tällaista:
<?php
// <a class="vglnk" target="_blank" href="https://helloacm.com/how-to-prevent-script-running-from-browsers/" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span><span>/</span><span>how</span><span>-</span><span>to</span><span>-</span><span>prevent</span><span>-</span><span>script</span><span>-</span><span>running</span><span>-</span><span>from</span><span>-</span><span>browsers</span><span>/</span></a>
require('deny-from-web.php'); // avoid calling from the web URL,
require('db.php');
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, "blog_database");
$today = date("Y-m-d h:i:s");
$query = "select
count(1)
from
`wp_posts`
where
(`post_type` = 'post') and
(`post_status` = 'publish')
";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_row($result);
$total = $row[0];
$cnt = 0;
if ($total > 0) {
while (1) {
$idx = mt_rand(0, $total - 1);
$query = "
select
`post_name`, `ID`, `post_title`
from
`wp_posts`
where
(`post_type` = 'post') and
(`post_status` = 'publish')
limit $idx, 1
";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_array($result);
$url = "<a class="vglnk" target="_blank" href="https://helloacm.com/".$row['post_name" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span><span>/".$</span><span>row</span><span>['</span><span>post</span><span>_</span><span>name</span></a>']. '/';
$title = $row['post_title'];
$query2 = "select date(`posttime`) from `twitter` where `url` = '$url' order by `posttime` desc limit 1";
$result2 = mysqli_query($connection, $query2);
if (mysqli_num_rows($result2) > 0) {
$lastrow = mysqli_fetch_row($result2);
$last = $lastrow[0];
$diff = abs((strtotime($today) - strtotime($last)) / 24 / 3600);
if ($diff <= 90) {
$cnt ++;
if ($cnt > 16) {// avoid endless loop
break;
}
continue;
}
}
$query = "
insert into `twitter`
set
`url` = '$url',
`posttime` = '$today'
";
mysqli_query($connection, $query);
$msg = $title;
$value1 = $url;
$value2 = $title;
echo "value2 = ". $value2. " n";
echo "value1 = ". $value1. " n";
// invoke the IFTTT Maker Channel
shell_exec("curl -s -X POST -H "Content-Type: application/json" -d '{"value1":"$value1","value2":"$value2"}' <a class="vglnk" target="_blank" href="https://maker.ifttt.com/trigger/{justyy}/with/key/YOUR_KEY" rel="nofollow"><span>https</span><span>://</span><span>maker</span><span>.</span><span>ifttt</span><span>.</span><span>com</span><span>/</span><span>trigger</span><span>/{</span><span>justyy</span><span>}/</span><span>with</span><span>/</span><span>key</span><span>/</span><span>YOUR</span><span>_</span><span>KEY</span></a>");
break;
}
}
echo "Done!n";
Jotta yllä oleva toimisi, sinun on luotava taulukko lähetettyjen artikkelien tallentamiseen (MySQL :n kautta ):
--
-- Table structure for table `twitter`
--
CREATE TABLE `twitter` (`id` bigint(32) NOT NULL,
`url` varchar(255) NOT NULL,
`posttime` date NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `twitter`
--
ALTER TABLE `twitter`
ADD PRIMARY KEY (`id`),
ADD KEY `urla` (`url`),
ADD KEY `dd` (`posttime`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `twitter`
--
ALTER TABLE `twitter`
MODIFY `id` bigint(32) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
Crontab-määritykset automaattista blogikirjoitusta varten
Viimeinen vaihe yllä olevan skriptin testaamisen jälkeen on PHP-komennon lisääminen crontab – töihin. Voit määrittää taajuuden esim. @daily tai @weekly, @monthly jne.
@daily php /path-to-your-script/ifftt-post-blog.php
