it-swarm.com.de

wordPress Einfügen von Beiträgen programmgesteuert über eine URL

Ich muss programmgesteuert Beiträge in Wordpress einfügen. Ich möchte, dass ich Beiträge über eine URL veröffentlichen kann. So etwas wie www.mypage.com/insertnewpost.php?title=blah&content=blahblahblah&category=1,2,3

Der folgende Code funktioniert nur, wenn ich ihn in der Datei functions.php der Themes verwende.

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

Wenn ich jedoch versuche, eine neue Seite wie insertnewposts.php zu erstellen und den obigen Code dort zu verwenden, erhalte ich Fehler wie Schwerwiegender Fehler: Rufe die undefinierte Funktion add_action () in Z:\www\wordpress\wp-includes\post.php online auf 144

Bitte helfen Sie.

2
hiprakhar

Ich habe endlich die Antwort auf das Problem.

Damit dieser Code funktioniert:

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

wir müssen sicherstellen, dass der WordPress-Bootstrap gestartet wurde ... Der WordPress-Bootstrap stellt sicher, dass alle WordPress-Konfigurationen in den Speicher geladen wurden. Dies beinhaltet alle Kernfunktionen etc.

Zurück zum ursprünglichen Problem des "programmgesteuerten Einfügens von Posts" müssen wir wp_insert_post () an der entsprechenden Stelle aufrufen nach , um den wp-Bootstrap zu starten.

Erstellen Sie dazu eine neue PHP-Datei wie www.ihredomain.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);
?>

Wenn Sie dieses Skript jetzt unter www.ihredomain.com/wpinstalldir/autoposts.php ausführen, wird Ihr Beitrag erstellt. Einfach und unkompliziert!

Das Hinzufügen der Zeile require(dirname(__FILE__) . '/wp-load.php'); hat den Unterschied ausgemacht.

2
hiprakhar

Das Hinzufügen der Zeile require(dirname(__FILE__) . '/wp-load.php'); hat den Unterschied ausgemacht.

Wenn Sie also einen Programmierbeitrag in WordPress schreiben möchten, gehen Sie wie folgt vor:

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

Hoffe, die Antwort auf diesen Link ist nützlich.

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

Stellen Sie sicher, dass die allgemeinen Funktionen in Ihrem Z:\www\wordpress\wp-includes\post.php verfügbar sind.

0
Rakesh Sankar