As postagens adicionadas com wp_insert_post são movidas para o lixo automaticamente

3

Eu tenho um script que faz um loop através de alguns dados e cria automaticamente alguns posts.

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}"]);
}

Depois que o script é executado, chego às postagens no back-end e vejo-as listadas como publicadas. Eu então vou para a página inicial (minha página de lista de posts), mas não há nenhuma listada. Eu volto para o backend para ver que todos foram movidos para o lixo. Eu tento restaurá-los todos, mas a mesma coisa continua acontecendo.

Alguma idéia?

    
por iamjonesy 11.11.2012 / 23:41

1 resposta

1

@iamjonesy, Uma possibilidade é você, seu tema já tem alguns posts deletados com título ou slugs similares ou o provedor de tema modificou o hook com algum filtro.

Aqui estão algumas coisas que você pode fazer para verificar: Tente encontrar a página com o título Se estiver na lixeira, atualize-a & alterar seu status; Caso contrário, crie-o programaticamente.

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 ) {

Caso contrário, se a página estiver na lixeira, atualize-a e altere seu status para publicar

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

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

Espero que esta ajuda:)

    
por Amar Pratap 26.03.2016 / 20:44