✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como reviver postagens antigas usando PHP e Crontab (WordPress)

27

Suponha que você tenha um grande número de posts decentes em seu blog e esteja se perguntando se existe uma maneira de postar no twitter/facebook (ou outras redes sociais) automática e regularmente.

Isso não é difícil. Embora este post irá guiá-lo para postar no twitter, mas o princípio é semelhante para outras redes sociais. Este post apresenta a função PHP para postar no twitter.

Não queremos postar o mesmo conteúdo/artigos repetidamente em um curto período de tempo. Portanto, precisamos criar uma tabela SQL que armazene o histórico dos posts republicados.

--
-- Table structure for table `twitter`
--

CREATE TABLE IF NOT EXISTS `twitter` (`id` bigint(32) unsigned NOT NULL,
  `url` varchar(255) NOT NULL,
  `posttime` datetime NOT NULL) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

A tabela tem três campos, um é a chave primária (incremento automático), o segundo campo é o local do URL que foi republicado e o terceiro é a data e hora.

Todos os campos devem estar devidamente indexados.

ALTER TABLE `twitter`
 ADD PRIMARY KEY (`id`), ADD KEY `url` (`url`,`posttime`), ADD KEY `posttime` (`posttime`);

Agora, se você tem um wordpress, você precisa consultar os posts válidos e escolher um aleatoriamente.

  // database constants
  require('db.php');
  // twitter function
  require('twitter.php');
  mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
  mysql_select_db(DB_NAME);
  $today = date("Y-m-d h:i:s");
  // get total number of valid posts
  $query = "
      select 
        count(1)
      from 
        `wp_posts`
      where 
        (`post_type` = 'page' or `post_type` = 'post') and 
        (`post_status` = 'publish')
  ";
  $result = mysql_query($query) or die(mysql_error());
  $total = mysql_result($result, 0, 0);
  $cnt = 0;
  if ($total > 0) {
    while (1) {
      // pick a random npost
      $idx = mt_rand(0, $total - 1);
      $query = "
        select 
          `post_name`, `post_title` 
        from 
          `wp_posts`
        where 
          (`post_type` = 'page' or `post_type` = 'post') and 
          (`post_status` = 'publish')
        limit $idx, 1
      ";
      $result = mysql_query($query) or die(mysql_error());
      $row = mysql_fetch_array($result);
      // post URL
      $url = "<a class="vglnk" target="_blank" href="http://www.codingforspeed.com/".$row['post_name']."/" rel="nofollow"><span>http</span><span>://</span><span>www</span><span>.</span><span>codingforspeed</span><span>.</span><span>com</span><span>/".$</span><span>row</span><span>['</span><span>post</span><span>_</span><span>name</span><span>']."/</span></a>";
      $title = $row['post_title'];
      $query2 = "select date(`posttime`) from `twitter` where `url` = '$url' order by `posttime` desc limit 1";
      $result2 = mysql_query($query2) or die(mysql_error());
      if (mysql_num_rows($result2) > 0) {
        $last = mysql_result($result2, 0, 0);
        // last reposted date/time
        $diff = abs((strtotime($today) - strtotime($last)) / 24 / 3600);
        if ($diff <= 90) {
          $cnt ++;
          if ($cnt > 16) { // max retry time to avoid endless loop
            break;  
          }
          continue; // try next random post
        }
      }
      // record the post in the table
      $query = "
        insert into `twitter`
        set 
          `url` = '$url',
          `posttime` = '$today'
      ";
      mysql_query($query) or die(mysql_error());
      $msg = "#Repost ".$title;
      echo "$msg $url";
      postTwitter($msg, $url);
      break;
    }
  }

A ideia aqui é pegar um post aleatório e verificar se foi repostado nos últimos 90 dias (modifique se necessário), se não, poste e registre no banco de dados. Caso contrário, tente as próximas postagens aleatórias até que algumas vezes tenham sido tentadas. Se não houver postagens ‘válidas’ encontradas (por exemplo, nenhum artigo novo por um longo tempo), ele detectará isso e abandonará o loop.

Verifique também este post para obter uma linha aleatória usando SQL.

A próxima coisa é testá-lo adequadamente e colocá-lo no crontab, por exemplo, uma vez por dia.

0 8 * * * php /home/justyy.lai/auto.php > /dev/null 2>&1

A postagem de mensagens no twitter é personalizável, e adicionei uma hash tag “#Repost" para diferenciar de outras postagens normais. o status também é sincronizado, o que é muito mais fácil para mim.

Fonte de gravação: helloacm.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação