web-dev-qa-db-fra.com

Les articles ajoutés avec wp_insert_post sont automatiquement transférés dans la corbeille

J'ai un script qui parcourt certaines données et crée automatiquement des publications.

foreach($data['title'] as $title)
{
    $my_post = array(
     'post_title' => $title,
     'post_content' => $data['descr']["{$title}"],
     'post_status' => 'publish',
     'post_author' => 1,
     'post_category' => array(7)
    );

    // Insert the post into the database
    $post_id = wp_insert_post( $my_post );
    add_post_meta($post_id, 'web_link', $data['link']["{$title}"]);
}

Une fois le script exécuté, je suis arrivé à des publications dans le backend et les ai répertoriées comme publiées. Je vais ensuite à la page d'accueil (la page de ma liste de messages) mais il n'y en a pas. Je retourne au backend pour voir qu'ils ont tous été déplacés à la corbeille. J'essaie de les restaurer tous, mais la même chose ne cesse de se produire.

Des idées?

3
iamjonesy

@iamjonesy, Une possibilité est que votre thème comporte déjà des publications supprimées avec un titre ou des slugs similaires ou que le fournisseur du thème ait modifié le hook avec un filtre.

Voici quelques choses à vérifier: Essayez de trouver la page avec le titre. Si elle se trouve dans la corbeille, mettez-la à jour et modifiez-la; Sinon, créez-le par programme.

foreach($data['title'] as $title)
{

// Initialize the page ID. This indicates no action has been taken.
    $page_id = -1;

// First, try to get the page
$page = get_page_by_title( $title, OBJECT, 'page' );

// If the page doesn't exist, create it
if( null == $page ) {

Sinon, si la page se trouve dans la corbeille, mettez-la à jour et changez son statut pour la publier.

} elseif( 'trash' == strtolower( $page->post_status ) ) {

    $page->post_status = 'publish';
    -----your code ---------

J'espère que cette aide :)

1
Amar Pratap