我创建了一个新页面,其中包含以下代码:
$my_post = array(
'post_content' => "My page content",
'post_title' => "Page for product 1234",
'page_template' => "listing.php"
);
$post_id = wp_insert_post( $my_post );
echo "<br /> ID returned from wp_insert_post is $post_id";
我尝试在数组中使页面使用&#34; listing.php&#34;作为模板,但是当我将http://example.com/?p=61放入我的浏览器地址栏时,其中61是上面$post_id
返回的wp_insert_post()
,找到了该页面,但它使用的是&#34 ;的single.php&#34;作为模板。
为什么它没有使用&#34; listing.php&#34;,我怎样才能使用&#34; listing.php&#34;?
BTW,我知道&#34; listing.php&#34;是一个有效的模板,因为如果我尝试从WP-Admin创建一个新页面,它会显示在模板下拉列表中页面|添加新内容。
答案 0 :(得分:3)
您需要指定post_type
,否则WordPress将默认为帖子(忽略page_template
参数)。
$my_post = array(
'post_content' => "My page content",
'post_title' => "Page for product 1234",
'post_type' => 'page', // Add this
'page_template' => "listing.php"
);
$post_id = wp_insert_post( $my_post );
page_template:
如果post_type
是&#39;页面&#39;,则会尝试设置页面模板。失败时,该函数将返回WP_Error或0,并在调用最终操作之前停止。 如果post_type不是&#39;页面&#39;,则会忽略该参数。您可以使用{{0}键调用update_post_meta()
来设置非页面的页面模板1}}。