页面没有使用给wp_insert_post()的模板

时间:2016-01-17 22:10:49

标签: wordpress

我创建了一个新页面,其中包含以下代码:

$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创建一个新页面,它会显示在模板下拉列表中页面|添加新内容。

1 个答案:

答案 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 );

来自Wordpress Codex

  

page_template:如果post_type是&#39;页面&#39;,则会尝试设置页面模板。失败时,该函数将返回WP_Error或0,并在调用最终操作之前停止。 如果post_type不是&#39;页面&#39;,则会忽略该参数。您可以使用{{0}键调用update_post_meta()来设置非页面的页面模板1}}。