web-dev-qa-db-fra.com

Création de page par programme à l'aide de $ wpdb et erreur 404

EDIT: Il s’est avéré que j’avais un problème de permalien qui causait l’erreur 404.

Affichage original ci-dessous:

Je crée une page par programme en utilisant $ wpdb-> insert () et la page résultante renvoie une erreur 404.

Quelques choses à noter

  • J'utilise un objet $ wpdb pour créer la page, car je la crée sur un site Web WordPress distinct. Par conséquent, wp_insert_post () ne fonctionne pas, car il insérerait la publication dans le site Web d'où provient l'appel. En gros, j'ai un réseau de sites Web et je crée une publication sur un site à partir d'un site différent.
  • Je crée une valeur personnalisée post_name (slug) pour la page.

Ainsi, lorsque j'ajoute la page par programme, tout ce qui se trouve dans la base de données a exactement le même aspect que s'il avait été ajouté via la zone d'administration de WordPress. Je peux même aller dans la zone d'administration WordPress de ce site Web et éditer le message. Cependant, si je vais voir la page, il jette un 404. Maintenant, si je "met à jour" le message à partir de la zone d'administration de WordPress, le 404 disparaît.

Si je crée un article par programme et que je le crée à partir de la zone Admin WordPress, puis que je regarde les colonnes de la base de données, ce sont les mêmes valeurs EXACT (ou qui semblent l'être). Pourquoi travaillerait-on et on ne travaillerait pas? J'utilise aussi des permaliens (rien de coutume, juste un de ces choix prédéfinis).

Ceci est l'appel d'insertion wpdb que j'utilise ...

$post = array(
    'post_author' => 1,
    'post_date' => date('Y-m-d H:i:s'),
    'post_date_gmt' => date('Y-m-d H:i:s'),
    'post_content' => '',
    'post_title' => 'My Page',
    'post_name' => 'my-page',
    'post_excerpt' => '',
    'post_status' => 'publish',
    'comment_status' => 'open',
    'ping_status' => 'open',
    'post_modified' => date('Y-m-d H:i:s'),
    'post_modified_gmt' => date('Y-m-d H:i:s'),
    'post_parent' => 0,
    'post_type' => 'page',
    'comment_count' => 0
);

$wpdb->insert(
    'wp_posts', 
    $post,
    array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' );
);
1
mikemick

Erreur de lien permanent

Je pensais utiliser un permalien de base, mais j'ai oublié que j'avais utilisé une structure personnalisée de permalien sur ce site Web en particulier.

Le permalien personnalisé que j'ai utilisé était %postname%.

Je suis passé à l'option de mois et de nom et maintenant tout fonctionne. Désolé pour la fausse question.

0
mikemick