Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Tester 07. 09. 2016, 07:21:44
-
Dobry den.
Chcel by som vytvarat nove posty na WordPress ale len s pomocov PHP. Skusal som toto
<?php
ini_set(‘display_errors’, 1);
error_reporting(E_ALL);
require(“wp-includes/post.php”);
// Create post object
$post = array(
'ID' => [ '3175' ], // Are you updating an existing post?
'post_content' => [ 'Test New Posr' ], // The full text of the post.
'post_name' => [ 'Test New Posr' ], // The name (slug) for your post
'post_title' => [ 'Test New Posr' ], // The title of your post.
'post_status' => [ 'pending'], // Default 'draft'.
'post_type' => [ 'post' ], // Default 'post'.
'post_author' => [ '1' ], // The user ID number of the author. Default is the current user ID.
'ping_status' => [ 'closed' ], // Pingbacks or trackbacks allowed. Default is the option 'default_ping_status'.
'post_parent' => [ '0' ], // Sets the parent of the new post, if any. Default 0.
'post_password' => [ '' ], // Password for post, if any. Default empty string.
'post_excerpt' => [ 'Baterka' ], // For all your post excerpt needs.
'comment_status' => [ 'closed'], // Default is the option 'default_comment_status', or 'closed'.
'post_category' => [ '' ], // Default empty.
'tags_input' => [ '' ], // Default empty.
'tax_input' => [ '' ], // For custom taxonomies. Default empty.
'page_template' => [ '' ], // Requires name of template file, eg template.php. Default empty.
);
wp_insert_post( $my_post );
?>
ale hadze mi to
Notice: Use of undefined constant “wp - assumed '“wp' in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Notice: Use of undefined constant includes - assumed 'includes' in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Notice: Use of undefined constant post - assumed 'post' in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Warning: Division by zero in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Notice: Use of undefined constant php” - assumed 'php”' in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Warning: : failed to open stream: No such file or directory in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Fatal error: require(): in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/king4home.com/web/onanator3000.php on line 6
Vedel by niekto poradit? Dakujem
-
Musíš includovat něco jinýho... tuším wp-load.php?
-
Tuxik : Skusil som ale bez odozvy. Inak oficialne fora radia presne tuto cestu.
Inar rozmyslam natvrdo nastrelit udaje do DB ako novy post ale netusim kde vsade to ma zavyslost a kde vsade do DB by som musel pridat "suvislost" pochybujem ze len do jednej tabulky...
-
Hmm... já takhle nějak tahal věci z WP externím skriptem a fungovalo to, ale vytvořit post jsem nezkoušel... Nacpat to natvrdo do databáze, to bude trochu oříšek...
Zkus mrknout sem
https://wordpress.org/support/topic/inserting-posts-via-external-script/
-
Tak problém není ani tolik v includování špatného souboru, ale v opravdu divném výběru uvozovek a apostrofů:
‘display_errors’ by mělo být 'display_errors' a require(“wp-includes/post.php”); by mělo být require("wp-includes/post.php");
Proto ty fatal errors ohledně nedefinovaných konstant.
Dále je v kódu použitá nedefinovaná proměnná $my_post - definovaná je pouze $post.
No a také parametry nově vytvářeného postu se nezdají být správné. Proč jsou všechny vytvářeny jako pole? (uzavřeny v []). Většina z nich by měla být pouhý string nebo integer.
Navíc, pokud chceš vytvořit nový příspěvek, tak bys neměl definovat ID. Pokud je ID definované, tak se data použijí k úpravě existujícího příspěvku.
Až budou tyhle chyby opraveny, tak bych rozhodně includoval již zmíněný wp-load.php a zároveň předtím nadefinoval pár konstant:
define('WP_USE_THEMES', false); //zakáže nahrávání souborů šablony
define( 'SHORTINIT', TRUE ); //nahraje jen to nejnutnější
No, a nakonec si neodpustím zmínit project WP CLI ( http://wp-cli.org/ ), díky kterému získáš command line nástroj pro správu své WordPress instalace. Přidávat nové příspěvky pak nevyžaduje žádné programování: http://wp-cli.org/commands/post/create/ - to by mohla být rychlejší cesta ke kýženému cíli.
-
No skusil som to takto ale chyby su stale tie iste :(
ini_set(‘display_errors’, 1);
error_reporting(E_ALL);
require(“wp-includes/post.php”);
require(“wp-includes/wp-load.php”);
// Create post object
$post = array(
'post_content' => 'Test New Posr', // The full text of the post.
'post_name' => 'Test New Posr', // The name (slug) for your post
'post_title' => 'Test New Posr', // The title of your post.
'post_status' => 'pending', // Default 'draft'.
'post_type' => 'post', // Default 'post'.
'post_author' => '1', // The user ID number of the author. Default is the current user ID.
'ping_status' => 'closed', // Pingbacks or trackbacks allowed. Default is the option 'default_ping_status'.
'SHORTINIT' => 'TRUE', // Default empty.
'WP_USE_THEMES' => 'false' , // Default empty.
);
wp_insert_post( $post );
-
resp inak
$post = array(
'post_title' => 'title' ,
'post_content' => 'test',
'post_status' => 'publish',
'post_author' => 1
);
-
binda inak dakujem za radu a tip. Ale ja praveze potrebujem taketo pridavanie skrz php. Ono to cuca udaje s inej DB.
-
Ospravedlnujem sa dnes je divny den.
ini_set(‘display_errors’, 1);
error_reporting(E_ALL);
require("wp-includes/post.php");
require("wp-load.php");//include 'wp-load.php' for run function wp_insert_post($post)
$post = array();
$post['post_title'] = "Test";
$post['post_content'] = "Test";
$post['post_type'] = "post";
$post['post_status'] = 'pending';
$post['post_author'] = 1;
$post['comment_status'] = 'closed';
$post['post_date'] = date('Y-m-d H:i:s',strtotime("now"));
$post['SHORTINIT'] = "True";
$post['WP_USE_THEMES'] = "false";
echo '$post post_content ' . $post['post_content'] . '<br>';
echo 'title' . '<br>';
echo $post['post_title'] . '<br>';
wp_insert_post($post);
Vracia bohuzial tuto chybu
Fatal error: Cannot redeclare create_initial_post_types() (previously declared in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/1d/web/wp-includes/post.php:21
Ma niekto radu ako to
-
Proč dáváš false a true do uvozovek? Má to nějaký skrytý význam?
-
asi bych zacal pouzitim require_once namisto require.
nemuzes si dat aby ti to vyhodilo pri chybe backtrace? bylo by dobre vedet kde to tu chybu vyhodilo.
-
Nepomohlo. ani require ani povyhadzovanie par podmienok
-
Ospravedlnujem sa dnes je divny den.
ini_set(‘display_errors’, 1);
error_reporting(E_ALL);
require("wp-includes/post.php");
require("wp-load.php");//include 'wp-load.php' for run function wp_insert_post($post)
$post = array();
$post['post_title'] = "Test";
$post['post_content'] = "Test";
$post['post_type'] = "post";
$post['post_status'] = 'pending';
$post['post_author'] = 1;
$post['comment_status'] = 'closed';
$post['post_date'] = date('Y-m-d H:i:s',strtotime("now"));
$post['SHORTINIT'] = "True";
$post['WP_USE_THEMES'] = "false";
echo '$post post_content ' . $post['post_content'] . '<br>';
echo 'title' . '<br>';
echo $post['post_title'] . '<br>';
wp_insert_post($post);
Vracia bohuzial tuto chybu
Fatal error: Cannot redeclare create_initial_post_types() (previously declared in /nfsmnt/hosting1_1/9/5/95f172f3-1bf2-4e58-baf2-0ac59b8517e5/1d/web/wp-includes/post.php:21
Ma niekto radu ako to
Tak ono to v té Fatal error je vysvětlené, o co se jedná. Funkce `create_initial_post_types` je již definovaná. A to proto, že wp-includes/post.php je inkludováno dvakrát. Poprvé manuálně a poté znovu skrze wp-load.php. Ten Fatal error tedy vyřešíš vyhozením `require("wp-includes/post.php");` a ponecháním pouze `require("wp-load.php");`
Dále následující:
$post['SHORTINIT'] = "True";
$post['WP_USE_THEMES'] = "false";
SHOTINIT A WP_USE_THEMES nejsou parametry pro funkci wp_insert_post, ale konstanty pro WordPress používané během inicializace. Tedy správné použití je takovéto:
ini_set('display_errors', 1);
error_reporting(E_ALL);
//zde nahrajeme WordPress
define('WP_USE_THEMES', false); //zakáže nahrávání souborů šablony
define( 'SHORTINIT', true ); //nahraje jen to nejnutnější
require("wp-load.php");
//a teď vytvoříme post
$post = array();
$post['post_title'] = "Test";
$post['post_content'] = "Test";
$post['post_type'] = "post";
$post['post_status'] = 'pending';
$post['post_author'] = 1;
$post['comment_status'] = 'closed';
$post['post_date'] = date('Y-m-d H:i:s',strtotime("now"));
wp_insert_post( $post );
-
Dakujem za radu.
Skusil som dalsich + 1 milion variacii a nefunguje to.
Fatal error: Call to undefined function wp_insert_post() in /.....
-
Dakujem za radu.
Skusil som dalsich + 1 milion variacii a nefunguje to.
Fatal error: Call to undefined function wp_insert_post() in /.....
WP skoro neumím, ale vím, že http://devel.cz/user/14135 ho umí dobře... radu už si tam dostal, napsat mu můžeš přímo...
-
Špatný require soubor.
require_once(“wp-blog-header.php”);
-
Špatný require soubor.
require_once(“wp-blog-header.php”);
btw nic jiného
-
Dakujem za radu.
Skusil som dalsich + 1 milion variacii a nefunguje to.
Fatal error: Call to undefined function wp_insert_post() in /.....
Omlouvám se, moje chyba. Ta konstanta SHORTINIT tam být nemá - brání nahrání potřebných funkcí. Tohle mi při testování funguje a tobě by mělo také:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
//zde nahrajeme WordPress
define('WP_USE_THEMES', false); //zakáže nahrávání souborů šablony
require("wp-load.php");
//a teď vytvoříme post
$post = array();
$post['post_title'] = "Test";
$post['post_content'] = "Test";
$post['post_type'] = "post";
$post['post_status'] = 'pending';
$post['post_author'] = 1;
$post['comment_status'] = 'closed';
$post['post_date'] = date('Y-m-d H:i:s',strtotime("now"));
wp_insert_post( $post );
-
No skusat to tiez ale napriklad hadze
Fatal error: Call to undefined function wp_insert_post() in ....
Celkom by ma zaujimalo ako to vyriesit
-
uz jsem ti to psal - zapni si pri chybove hlasky vypisovani backtrace
-
No takze nakoniec je to takto.
ini_set('display_errors', 1);
error_reporting(E_ALL);
//zde nahrajeme WordPress
define('WP_USE_THEMES', false); //zakáže nahrávání souboru šablony
require("wp-load.php");
//a ted vytvoríme post
$post = array();
$post['post_title'] = "Test2BUKAKE3";
$post['post_content'] = "Test druhy post";
$post['post_type'] = "post";
$post['post_status'] = 'pending';
$post['post_author'] = 1;
$post['comment_status'] = 'closed';
$post['post_date'] = date('Y-m-d H:i:s',strtotime("now"));
wp_insert_post( $post );
print_r( debug_backtrace() )
Ak som nepridal print_r( debug_backtrace() )
tak to koncilo chybovou hlaskou. Ak je tam aj to debug_backtrace tak to cele krasne zbehne.
Dakujem za radi