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.
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.
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';
Hoffe, die Antwort auf diesen Link ist nützlich.
Stellen Sie sicher, dass die allgemeinen Funktionen in Ihrem Z:\www\wordpress\wp-includes\post.php
verfügbar sind.