未插入WP_INSERT_POST通过外壳类别

时间:2014-11-12 作者:Andrea Giorgini

我正在使用以下代码:

$post = array(
        \'post_content\' => $desc,
        \'post_title\' => $name_new,
        \'post_status\' => \'publish\',
        \'post_type\' => \'portfolio_page\',
        \'tax_input\' => array(\'portfolio_category\' => array($cat, 18, 19))
    );

    if (!$post_id = wp_insert_post($post)) {
        die(\'Error\');
    }
当通过web浏览器执行时,它可以完美地工作。不幸的是,我需要通过shell执行它,现在发生的是插入了帖子,但忽略了tax\\u输入。

有什么建议吗?

非常感谢

2 个回复
SO网友:Rarst

这是典型的问题。虽然wp_insert_post() 不会检查用户插入帖子的能力tax_input 部分实际上将检查用户是否有权操作这些特定的分类法。

如果您没有在shell上下文中复制用户登录状态,那么它将相应地失败。

解决方案是先插入post,然后通过单独的函数调用分配术语,这不会检查功能(是的,它不一致)。

SO网友:jacobwarduk

正如已经指出的,通过tax_input 参数到wp_insert_post() 您需要让用户登录。在您的情况下,试图从shell执行此操作是没有用的。

或者,您可以使用XML-RPC创建post。

// Function to post to WordPress using XML-RPC
function wp_post_xmlrpc( $username, $password, $rpc_url, $title, $body, $post_type, $categories ) {

    $title = htmlentities( $title, ENT_NOQUOTES, \'UTF-8\' );

    $content = array(
        \'title\'             => $title,
        \'description\'       => $body,
        \'mt_allow_comments\' => 0,  // 1 to allow comments
        \'mt_allow_pings\'    => 0,  // 1 to allow trackbacks
        \'post_type\'         => $post_type,
        \'categories\'        => array( $categories ), 
    );

    $params = array( 0, $username, $password, $content, true );

    $request = xmlrpc_encode_request( \'metaWeblog.newPost\', $params );

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
    curl_setopt($ch, CURLOPT_URL, $rpc_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $results = curl_exec($ch);

    curl_close($ch);

    return $results;    // Returns the ID of the post

}



$example_post = wp_post_xmlrpc( \'username\', \'password\', \'http://www.mysite.com/xmlrpc.php\', \'Example XML-RPC Post\', \'This is an example post using XML-RPC\', \'post\', array( \'category_one\', \'category_two\', \'category_three\' ) );

echo $example_post; // Echoes out the ID of the post
代码和示例应该是非常自我记录的。

结束

相关推荐