web-dev-qa-db-fra.com

wordpress insérant des posts de manière programmée via une url

Je dois insérer des messages par programme dans Wordpress. Je veux pouvoir publier des articles via une URL. Quelque chose comme www.mypage.com/insertnewpost.php?title=blah&content=blahblahblah&category=1,2,3

Le code suivant ne fonctionne que si je l'utilise dans le fichier functions.php des thèmes.

include '../../../wp-includes/post.php';
global $user_ID;
$new_post = array(
'post_title' => 'My New Post',
'post_content' => 'Lorem ipsum dolor sit amet...',
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s'),
'post_author' => $user_ID,
'post_type' => 'post',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);

Cependant, lorsque j'essaie de créer une nouvelle page telle que insertnewposts.php et d'utiliser le code ci-dessus, des erreurs telles que Erreur fatale se produisent: Appel à la fonction non définie add_action () dans Z:\www\wordpress\wp-includes\post.php en ligne 144

S'il vous plaît aider.

2
hiprakhar

J'ai enfin eu la réponse au problème.

Pour que this code fonctionne:

global $user_ID;
$new_post = array(
'post_title' => 'My New Post',
'post_content' => 'Lorem ipsum dolor sit amet...',
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s'),
'post_author' => $user_ID,
'post_type' => 'post',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);

nous devons nous assurer que le bootstrap de wordpress a été démarré ... Bootstrap de Wordpress garantit que toute la configuration de wordpress a été chargée dans la mémoire. Cela inclut toutes les fonctions principales, etc.

Pour revenir au problème initial de "l'insertion de publications par programme", nous devons appeler wp_insert_post () à l'endroit approprié après pour démarrer le bootstrap wp.

Pour cela, créez un nouveau fichier php tel que www.votredomaine.com/wpinstalldir/autoposts.php

<?php
/**
 * Writes new posts into wordpress programatically
 *
 * @package WordPress
 */

/** Make sure that the WordPress bootstrap has run before continuing. */
require(dirname(__FILE__) . '/wp-load.php');

global $user_ID;
$new_post = array(
'post_title' => 'My New Post',
'post_content' => 'Lorem ipsum dolor sit amet...',
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s'),
'post_author' => $user_ID,
'post_type' => 'post',
'post_category' => array(0)
);
$post_id = wp_insert_post($new_post);
?>

Maintenant, lorsque vous exécuterez ce script à l'adresse www.votdomain.com/wpinstalldir/autoposts.php, votre message sera créé. Facile et simple!

Le simple fait d’ajouter la ligne require(dirname(__FILE__) . '/wp-load.php'); a fait toute la différence.

2
hiprakhar

Le simple fait d’ajouter la ligne require(dirname(__FILE__) . '/wp-load.php'); a fait toute la différence.

Alors, quand vous voulez écrire un post de programmation sur WordPress, faites comme ceci:

error_reporting(E_ALL);
ini_set("display_errors", 1);
set_time_limit(0);
require(dirname(__FILE__) . '/wp-load.php'); 

// Create post object
$my_post = array(
  'post_title'    => wp_strip_all_tags( 'test' ),
  'post_content'  => 'hi boy',
  'post_status'   => 'publish',
  'post_author'   => 1
);

$post_id = wp_insert_post( $my_post, $wp_error );

if ($wp_error==false)
 echo $post_id ;
else
  echo 'Not set';
echo 'Ended';
0
user49648

J'espère que la réponse sur ce lien est utile.

https://stackoverflow.com/questions/3947979/fatal-error-call-to-undefined-function-add-action/3952058#3952058

Assurez-vous que les fonctions communes sont accessibles dans votre Z:\www\wordpress\wp-includes\post.php

0
Rakesh Sankar