{"id":232856,"date":"2023-01-29T17:57:00","date_gmt":"2023-01-29T14:57:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232856"},"modified":"2023-02-10T16:20:26","modified_gmt":"2023-02-10T13:20:26","slug":"comment-faire-revivre-les-anciens-messages-en-utilisant-php-et-crontab-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-faire-revivre-les-anciens-messages-en-utilisant-php-et-crontab-wordpress\/","title":{"rendered":"Comment faire revivre les anciens messages en utilisant PHP et Crontab (WordPress)"},"content":{"rendered":"\n<p>Supposons que vous ayez un certain nombre de messages d\u00e9cents sur votre blog et que vous vous demandiez s&rsquo;il existe un moyen de publier sur Twitter\/Facebook (ou d&rsquo;autres r\u00e9seaux sociaux) automatiquement et r\u00e9guli\u00e8rement.<\/p>\n<p>Ce n&rsquo;est pas difficile. Bien que ce post vous guidera pour poster sur twitter mais le principe est similaire pour les autres r\u00e9seaux sociaux. <a href=\"https:\/\/helloacm.com\/php-function-to-post-to-twitter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Cet article<\/a> pr\u00e9sente la fonction PHP pour publier sur Twitter.<\/p>\n<p>Nous ne voulons pas publier le m\u00eame contenu\/articles encore et encore dans un court laps de temps. Par cons\u00e9quent, nous devons cr\u00e9er une table SQL qui stocke l&rsquo;historique des articles republi\u00e9s.<\/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>La table comporte trois champs, l&rsquo;un est la cl\u00e9 primaire (incr\u00e9mentation automatique), le deuxi\u00e8me champ est l&#8217;emplacement de l&rsquo;URL qui a \u00e9t\u00e9 republi\u00e9e et le troisi\u00e8me est la date et l&rsquo;heure.<\/p>\n<p>Tous les champs doivent \u00eatre correctement index\u00e9s.<\/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>Maintenant, si vous avez un wordpress, vous devez interroger les messages valides et en choisir un au hasard.<\/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>L&rsquo;id\u00e9e ici est d&rsquo;obtenir un message al\u00e9atoire et de v\u00e9rifier s&rsquo;il a \u00e9t\u00e9 republi\u00e9 au cours des 90 derniers jours (modifiez si n\u00e9cessaire), sinon, postez-le et enregistrez-le dans la base de donn\u00e9es. Sinon, essayez les prochains messages al\u00e9atoires jusqu&rsquo;\u00e0 ce qu&rsquo;un certain nombre de fois aient \u00e9t\u00e9 essay\u00e9s. S&rsquo;il n&rsquo;y a pas de messages &quot;valides&quot; trouv\u00e9s (par exemple, pas de nouveaux articles pendant une longue p\u00e9riode), il le d\u00e9tectera et abandonnera la boucle.<\/p>\n<p>V\u00e9rifiez \u00e9galement cet <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/ajouter-une-publication-aleatoire-suivante-dans-le-modele-de-page-wordpress-a-laide-de-sql\/\" title=\"article\">article<\/a> pour obtenir une ligne al\u00e9atoire \u00e0 l&rsquo;aide de SQL.<\/p>\n<p>La prochaine chose est de le tester correctement et de le mettre dans le <strong><a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a><\/strong>, par exemple une fois par jour.<\/p>\n<pre><code>0 8 * * * php \/home\/justyy.lai\/auto.php &gt; \/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<p>La publication du message sur Twitter est personnalisable et j&rsquo;ai ajout\u00e9 une balise de hachage &quot;#Repost&quot; pour me distinguer des autres publications normales. J&rsquo;ai \u00e9galement li\u00e9 mon compte Twitter \u00e0 une page Facebook, de sorte que chaque fois que les twits sont publi\u00e9s sur Twitter, la page Facebook statut est \u00e9galement synchronis\u00e9, ce qui est beaucoup plus facile pour moi.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment faire revivre les anciens messages en utilisant PHP et Crontab<\/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":[675,893,832,993,801,841,862],"tags":[1167],"class_list":["post-232856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloguer","category-code-2","category-guide-pour-les-debutants","category-marketing-de-contenu","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=232856"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232856\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/220869"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=232856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=232856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=232856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}