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
Citace od: Tester kdy 07. 09. 2016, 19:46:36
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 /.....
Citace od: Tester kdy 09. 09. 2016, 10:13:39
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");
Citace od: qwe kdy 10. 09. 2016, 12:15:19
Špatný require soubor.
require_once("wp-blog-header.php");
btw nic jiného
Citace od: Tester kdy 09. 09. 2016, 10:13:39
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