{"id":232817,"date":"2023-01-29T17:30:00","date_gmt":"2023-01-29T14:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232817"},"modified":"2023-02-10T16:21:23","modified_gmt":"2023-02-10T13:21:23","slug":"kuidas-taaselustada-vanu-postitusi-php-ja-crontabi-wordpress-abil","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kuidas-taaselustada-vanu-postitusi-php-ja-crontabi-wordpress-abil\/","title":{"rendered":"Kuidas taaselustada vanu postitusi PHP ja Crontabi (WordPress) abil"},"content":{"rendered":"\n<p>Oletame, et teie ajaveebis on \u00fcsna palju korralikke postitusi ja te m\u00f5tlete, kas on v\u00f5imalik postitada Twitterisse\/Facebooki (v\u00f5i muudesse suhtlusv\u00f5rgustikesse) automaatselt ja regulaarselt.<\/p>\n<p>See pole keeruline. Kuigi see postitus juhendab teid Twitterisse postitama, on p\u00f5him\u00f5te sarnane ka teiste sotsiaalv\u00f5rgustike puhul. <a href=\"https:\/\/helloacm.com\/php-function-to-post-to-twitter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">See postitus<\/a> tutvustab PHP-funktsiooni Twitterisse postitamiseks.<\/p>\n<p>Me ei taha l\u00fchikese aja jooksul sama sisu\/artikleid uuesti ja uuesti postitada. Seet\u00f5ttu peame looma SQL-i tabeli, mis salvestab uuesti avaldatud postituste ajaloo.<\/p>\n<pre><code>--\n-- Table structure for table `twitter`\n--\n\nCREATE TABLE IF NOT EXISTS `twitter` (`id` bigint(32) unsigned NOT NULL,\n  `url` varchar(255) NOT NULL,\n  `posttime` datetime NOT NULL) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;<\/code><\/pre>\n<p>Tabelis on kolm v\u00e4lja, millest \u00fcks on primaarv\u00f5ti (automaatne suurendamine), teine \u200b\u200bv\u00e4li on uuesti avaldatud URL-i asukoht ja kolmas kuup\u00e4ev ja kellaaeg.<\/p>\n<p>K\u00f5ik v\u00e4ljad peavad olema korralikult indekseeritud.<\/p>\n<pre><code>ALTER TABLE `twitter`\n ADD PRIMARY KEY (`id`), ADD KEY `url` (`url`,`posttime`), ADD KEY `posttime` (`posttime`);<\/code><\/pre>\n<p>N\u00fc\u00fcd, kui teil on WordPress, peate esitama p\u00e4ringu kehtivate postituste kohta ja valima \u00fche juhuslikult.<\/p>\n<pre><code>\u00a0 \/\/ database constants\n\u00a0 require('db.php');\n\u00a0 \/\/ twitter function\n\u00a0 require('twitter.php');\n\u00a0 mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());\n\u00a0 mysql_select_db(DB_NAME);\n\u00a0 $today = date(\"Y-m-d h:i:s\");\n\u00a0 \/\/ get total number of valid posts\n\u00a0 $query = \"\n \u00a0 \u00a0 \u00a0select \n \u00a0 \u00a0 \u00a0 \u00a0count(1)\n \u00a0 \u00a0 \u00a0from \n \u00a0 \u00a0 \u00a0 \u00a0`wp_posts`\n \u00a0 \u00a0 \u00a0where \n \u00a0 \u00a0 \u00a0 \u00a0(`post_type` = 'page' or `post_type` = 'post') and \n \u00a0 \u00a0 \u00a0 \u00a0(`post_status` = 'publish')\n \u00a0\";\n\u00a0 $result = mysql_query($query) or die(mysql_error());\n\u00a0 $total = mysql_result($result, 0, 0);\n\u00a0 $cnt = 0;\n\u00a0 if ($total &gt; 0) {\n\u00a0 \u00a0 while (1) {\n\u00a0 \u00a0 \u00a0 \/\/ pick a random npost\n\u00a0 \u00a0 \u00a0 $idx = mt_rand(0, $total - 1);\n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0select \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`post_name`, `post_title` \n \u00a0 \u00a0 \u00a0 \u00a0from \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`wp_posts`\n \u00a0 \u00a0 \u00a0 \u00a0where \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0(`post_type` = 'page' or `post_type` = 'post') and \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0(`post_status` = 'publish')\n \u00a0 \u00a0 \u00a0 \u00a0limit $idx, 1\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 $result = mysql_query($query) or die(mysql_error());\n\u00a0 \u00a0 \u00a0 $row = mysql_fetch_array($result);\n\u00a0 \u00a0 \u00a0 \/\/ post URL\n\u00a0 \u00a0 \u00a0 $url = \"&lt;a class=\"vglnk\" target=\"_blank\" href=\"http:\/\/www.codingforspeed.com\/\".$row['post_name'].\"\/\" rel=\"nofollow\"&gt;&lt;span&gt;http&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;www&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;codingforspeed&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/\".$&lt;\/span&gt;&lt;span&gt;row&lt;\/span&gt;&lt;span&gt;['&lt;\/span&gt;&lt;span&gt;post&lt;\/span&gt;&lt;span&gt;_&lt;\/span&gt;&lt;span&gt;name&lt;\/span&gt;&lt;span&gt;'].\"\/&lt;\/span&gt;&lt;\/a&gt;\";\n\u00a0 \u00a0 \u00a0 $title = $row['post_title'];\n\u00a0 \u00a0 \u00a0 $query2 = \"select date(`posttime`) from `twitter` where `url` = '$url' order by `posttime` desc limit 1\";\n\u00a0 \u00a0 \u00a0 $result2 = mysql_query($query2) or die(mysql_error());\n\u00a0 \u00a0 \u00a0 if (mysql_num_rows($result2) &gt; 0) {\n\u00a0 \u00a0 \u00a0 \u00a0 $last = mysql_result($result2, 0, 0);\n\u00a0 \u00a0 \u00a0 \u00a0 \/\/ last reposted date\/time\n\u00a0 \u00a0 \u00a0 \u00a0 $diff = abs((strtotime($today) - strtotime($last)) \/ 24 \/ 3600);\n\u00a0 \u00a0 \u00a0 \u00a0 if ($diff &lt;= 90) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 $cnt ++;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if ($cnt &gt; 16) { \/\/ max retry time to avoid endless loop\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 break;\u00a0 \n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 continue; \/\/ try next random post\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \/\/ record the post in the table\n\u00a0 \u00a0 \u00a0 $query = \"\n \u00a0 \u00a0 \u00a0 \u00a0insert into `twitter`\n \u00a0 \u00a0 \u00a0 \u00a0set \n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`url` = '$url',\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0`posttime` = '$today'\n \u00a0 \u00a0 \u00a0\";\n\u00a0 \u00a0 \u00a0 mysql_query($query) or die(mysql_error());\n\u00a0 \u00a0 \u00a0 $msg = \"#Repost \".$title;\n\u00a0 \u00a0 \u00a0 echo \"$msg $url\";\n\u00a0 \u00a0 \u00a0 postTwitter($msg, $url);\n\u00a0 \u00a0 \u00a0 break;\n\u00a0 \u00a0 }\n\u00a0 }<\/code><\/pre>\n<p>Siin on m\u00f5te hankida juhuslik postitus ja kontrollida, kas seda on viimase 90 p\u00e4eva jooksul uuesti postitatud (vajadusel muuta), kui mitte, siis postitada ja andmebaasi salvestada. Vastasel juhul proovige j\u00e4rgmisi juhuslikke postitusi, kuni olete proovinud paar korda. Kui selliseid &#8216;kehtivaid&#8217; postitusi ei leitud (nt pole pikka aega uusi artikleid), tuvastab see selle ja j\u00e4tab ts\u00fckli.<\/p>\n<p>Kontrollige seda <a href=\"https:\/\/wordpress.mediadoma.com\/et\/lisage-sql-i-abil-wordpressi-lehemalli-jaergmine-juhuslik-postitus\/\" title=\"postitust\">postitust<\/a> ka juhuslike ridade saamiseks SQL-i abil.<\/p>\n<p>J\u00e4rgmine asi on seda korralikult testida ja <strong><a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontabisse<\/a><\/strong> panna nt kord p\u00e4evas.<\/p>\n<pre><code>0 8 * * * php \/home\/justyy.lai\/auto.php &gt; \/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>Twitterisse postitamine on kohandatav ja lisasin muudest tavapostitustest eristamiseks r\u00e4sisildi &quot;#Repost&quot;. Seon ka oma twitteri konto Facebooki lehega, nii et iga kord, kui twitsid Twitterisse postitatakse, on Facebooki leht olek on ka s\u00fcnkroonitud, mis on minu jaoks palju lihtsam.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kuidas taaselustada vanu postitusi PHP ja Crontabi abil<\/p>\n","protected":false},"author":1,"featured_media":220869,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[676,833,894,842,802,994,863],"tags":[1165],"class_list":["post-232817","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blogida","category-juhend-algajatele","category-kood","category-opetused","category-php-4","category-sisuturundus","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/232817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=232817"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/232817\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/220869"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=232817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=232817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=232817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}