我想创建一个博客页面, 该页面根据特定用户的Facebook喜欢, 活动等为特定用户生成内容。例如, 我喜欢Facebook上的Shakira和可口可乐。当进入博客并通过Facebook连接时, 博客会获取该信息并通过YouTube API搜索Shakira的YouTube视频, 并在WordPress帖子中向我显示该视频。在博客中搜索与可口可乐有关的新闻并在帖子中显示有关它的新闻之后。
FB连接, YouTube搜索或Google搜索都没有问题。我的问题是WordPress。因为可以有很多用户, 并且可以为每个用户生成很多内容, 所以我不能将每条帖子都保存在MySQL表中。我想动态生成帖子。我不是在这里要求代码, 我只是想听听好的解决方案和想法, 如何做到这一点。
#1
作为解决方案, 你可以使用404页面生成此动态帖子。
这里有一个博客文章提供了类似的解决方案:http://www.blogseye.com/creating-fake-wordpress-posts-on-the-fly/
用于生成假帖子的代码:
function kpg_f_content() {
global $wp_query;
if($wp_query->is_404 ) {
$id=-42; // need an id
$post = new stdClass();
$post->ID= $id;
$post->post_category= array('uncategorized'); //Add some categories. an array()???
$post->post_content='hey here we are a real post'; //The full text of the post.
$post->post_excerpt= 'hey here we are a real post'; //For all your post excerpt needs.
$post->post_status='publish'; //Set the status of the new post.
$post->post_title= 'Fake Title'; //The title of your post.
$post->post_type='post'; //Sometimes you might want to post a page.
$wp_query->queried_object=$post;
$wp_query->post=$post;
$wp_query->found_posts = 1;
$wp_query->post_count = 1;
$wp_query->max_num_pages = 1;
$wp_query->is_single = 1;
$wp_query->is_404 = false;
$wp_query->is_posts_page = 1;
$wp_query->posts = array($post);
$wp_query->page=false;
$wp_query->is_post=true;
$wp_query->page=false;
}
}
add_action('wp', 'kpg_f_content');
使它成为插件或将其添加到functions.php文件。
#2
替代解决方案:
add_filter('init', 'custom_function');
function custom_function(){
if(is_admin()==true) return false;
//check URL
if($_SERVER['REQUEST_URI'] != '/hello/') return false;
echo 'Hello.';
exit();
}
#3
这是动态创建帖子的另一种方法
$post = array(
'ID' => [ <post id> ] // Are you updating an existing post?
'post_content' => [ <string> ] // The full text of the post.
'post_name' => [ <string> ] // The name (slug) for your post
'post_title' => [ <string> ] // The title of your post.
'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ] // Default 'draft'.
'post_type' => [ 'post' | 'page' | 'link' | 'nav_menu_item' | custom post type ] // Default 'post'.
'post_author' => [ <user ID> ] // The user ID number of the author. Default is the current user ID.
'ping_status' => [ 'closed' | 'open' ] // Pingbacks or trackbacks allowed. Default is the option 'default_ping_status'.
'post_parent' => [ <post ID> ] // Sets the parent of the new post, if any. Default 0.
'menu_order' => [ <order> ] // If new post is a page, sets the order in which it should appear in supported menus. Default 0.
'to_ping' => // Space or carriage return-separated list of URLs to ping. Default empty string.
'pinged' => // Space or carriage return-separated list of URLs that have been pinged. Default empty string.
'post_password' => [ <string> ] // Password for post, if any. Default empty string.
'guid' => // Skip this and let WordPress handle it, usually.
'post_content_filtered' => // Skip this and let WordPress handle it, usually.
'post_excerpt' => [ <string> ] // For all your post excerpt needs.
'post_date' => [ Y-m-d H:i:s ] // The time post was made.
'post_date_gmt' => [ Y-m-d H:i:s ] // The time post was made, in GMT.
'comment_status' => [ 'closed' | 'open' ] // Default is the option 'default_comment_status', or 'closed'.
'post_category' => [ array(<category id>, ...) ] // Default empty.
'tags_input' => [ '<tag>, <tag>, ...' | array ] // Default empty.
'tax_input' => [ array( <taxonomy> => <array | string> ) ] // For custom taxonomies. Default empty.
'page_template' => [ <string> ] // Requires name of template file, eg template.php. Default empty.
);
$post_id = wp_insert_post($post);
这对我有很大帮助!!
有关wp_insert_post的更多信息, 请单击此处
评论前必须登录!
注册