Vytvořil jsem si jednoduchou funkci, která přidá do wordpressu nový post přímo z PHP kódu. Používám to ve svých robotech, kteří běhají po internetu a vyhledávají na moje weby vhodný obsah ![]()
Dost lidí se mě na to ptalo, i na různých fórech bývají problémy s funkčností kódu…
Tak tady … máte moji funkční verzi.
Funkce má 5 parametrů.
$title, $content, $category_id, $author_id a $tags
K čemu jsou je snad jasné z názvu. A kdyby ne, pár řádků kódu je lepší, než stránka manuálu
takže:
function add_post($title, $content, $category_id, $author_id, $tags) { $post_data = array(); $post_cat[] = (int)$category_id; $post_data['post_category'] = $post_cat; $post_data['post_title'] = $title; $post_data['post_content'] = $content; $post_data['post_status'] = "publish"; $post_data['tags_input'] = $tags; $post_data['post_author'] = $author_id; $post_id = wp_insert_post($post_data); return $post_id; }
Funkci zavoláte asi nějak takhle
add_post ("Nadpis", "Obsah", 3, 1, "tag1, tag2");
Vátí se buďto ID vloženého postu, nebo při chybě False.
Tohle už je „final“ verze funkce, kterou běžně používám. Začatky ale byly i pro mě těžké
První pokusy vypadaly tak, že jsem data natlačil do $_POST, volal _wp_translate_postdata a pak wp_write_post. Díky tomu, že jsem neměl ID kategorie v poli mi to nešlo a post se vždy uložil do výchozí katekorie, takže pak bylo ještě nutné normálním SQL dotazem upravit tabulky term_taxonomy a term_relationships. Což samozřejmě často dělalo v databázi docela slušnej bordel
Ukázka:
include ("./wp-load.php"); $nadpis = "Článek přidaný z PHP"; $obsah = "Toto je úvod článku, který přidávám přímo z php kódu"; $obsah .= "<!--more-->"; $obsah .= "A tohle už je hlavní čast textu, viditelná až po rozkliknutí postu."; $tagy = "wordpress, php, wp_insert_post, jahody"; $kategorie = 3; $autor = 1; $postid = add_post ($nadpis, $obsah, $kategorie, $autor, $tagy); if(!$postid) die("chyba"); echo "Byl přidán nový post. Má ID: " . $postid; function add_post($title, $content, $category_id, $author_id, $tags) { $post_data = array(); $post_cat[] = (int)$category_id; $post_data['post_category'] = $post_cat; $post_data['post_title'] = $title; $post_data['post_content'] = $content; $post_data['post_status'] = "publish"; $post_data['tags_input'] = $tags; $post_data['post_author'] = $author_id; $post_id = wp_insert_post($post_data); return $post_id; }
test