Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Tester 07. 09. 2016, 07:21:44

Název: WordPress přidání nového postu pomocí PHP
Přispěvatel: 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

Kód: [Vybrat]
<?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

Kód: [Vybrat]
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
Název: Re:Wordpress pridanie nove postu pomocov PHP
Přispěvatel: Tuxik 07. 09. 2016, 08:09:24
Musíš includovat něco jinýho... tuším wp-load.php?
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 07. 09. 2016, 10:48:56
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...
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tuxik 07. 09. 2016, 11:43:23
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/
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: binda 07. 09. 2016, 12:01:29
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.
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 07. 09. 2016, 19:24:13
No skusil som to takto ale chyby su stale tie iste :(
Kód: [Vybrat]
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 );
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 07. 09. 2016, 19:30:08
resp inak

Kód: [Vybrat]
$post = array(
 'post_title'    => 'title' ,
  'post_content'  => 'test',
  'post_status'   => 'publish',
  'post_author'   => 1
 
);
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 07. 09. 2016, 19:31:24
binda inak dakujem za radu a tip. Ale ja praveze potrebujem taketo pridavanie skrz php. Ono to cuca udaje s inej DB.
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 07. 09. 2016, 19:46:36
Ospravedlnujem sa dnes je divny den.
Kód: [Vybrat]
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
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Kit 07. 09. 2016, 19:51:47
Proč dáváš false a true do uvozovek? Má to nějaký skrytý význam?
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: to_je_jedno 07. 09. 2016, 20:12:51
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.
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 08. 09. 2016, 07:41:16
Nepomohlo. ani require ani povyhadzovanie par podmienok
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: binda 08. 09. 2016, 10:28:09
Ospravedlnujem sa dnes je divny den.
Kód: [Vybrat]
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í:

Kód: [Vybrat]
$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:

Kód: [Vybrat]
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 );
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 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 /.....
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Wavelet 09. 09. 2016, 12:07:22
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...
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: qwe 10. 09. 2016, 12:15:19
Špatný require soubor.

Kód: [Vybrat]
require_once(“wp-blog-header.php”);
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: qwe 10. 09. 2016, 12:17:54
Špatný require soubor.

Kód: [Vybrat]
require_once(“wp-blog-header.php”);

btw nic jiného
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: binda 11. 09. 2016, 12:09:49
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é:

Kód: [Vybrat]
<?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 );
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: PetreDlh 12. 09. 2016, 14:30:00
No skusat to tiez ale napriklad hadze

Fatal error: Call to undefined function wp_insert_post() in ....

Celkom by ma zaujimalo ako to vyriesit
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: to_je_jedno 12. 09. 2016, 14:58:52
uz jsem ti to psal - zapni si pri chybove hlasky vypisovani backtrace
Název: Re:WordPress přidání nového postu pomocí PHP
Přispěvatel: Tester 14. 09. 2016, 08:36:28
No takze nakoniec je to takto.
Kód: [Vybrat]
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