PHP wp_使用表单在前面插入数据

时间:2014-11-20 作者:user2882154

我在我的网站上使用一个表单,允许用户在我的wordpress管理员上创建帖子。它工作得很好,但我有一个问题,我没有在我的管理标签元。

以下是我的php代码:

<?php 
if(isset($_POST[\'submit\'])){

    $err = array();
    $err[\'status\'] = true;
    $output = "";

    if(empty($_POST[\'pseudo\'])){
        $err[\'status\'] = false;
        $err[\'msg\'][] = \'Le champ "Pseudo" ne peut être vide.\';
    }
    if(empty($_POST[\'mail\']) || !preg_match(\'/[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z]{2,4}/\',$_POST[\'mail\'])){
        $err[\'status\'] = false;
        $err[\'msg\'][] = \'Le champs "Mail" est mal renseigné\';
    }
    if(empty($_POST[\'title\'])){
        $err[\'status\'] = false;
        $err[\'msg\'][] = \'Le champ "Titre" ne peut être vide.\';
    }
    if(empty($_POST[\'content\'])){
        $err[\'status\'] = false;
        $err[\'msg\'][] = \'Le champ "Article" ne peut être vide.\';
    }

    if($err[\'status\']){

        $insert = array(
            \'post_status\'   => \'publish\',
            \'post_title\'    => htmlentities($_POST[\'title\']),
            \'post_content\'  => htmlentities($_POST[\'content\']),
            \'post_category\' => array(11),
            \'post_author\'   => 999,
        );

        $post_id = wp_insert_post($insert);

        if($post_id != 0){

            /*
            TAGS
            */
            if(!empty($_POST[\'keywords\'])){

                $keywords = explode(\',\',$_POST[\'keywords\']);

                foreach($keywords as $k=>$v){
                    $tag = trim(strip_tags($v));
                    wp_insert_term(
                        $tag,
                        \'post_tag\',
                        array(
                            \'slug\' => sanitize_title($tag)
                        )
                    );
                }

            }
            $user_meta_values = array(
                \'pseudo\'    => htmlentities($_POST[\'pseudo\']),
                \'mail\'      => $_POST[\'mail\']
            );
            $output = add_post_meta($post_id, "user_meta", json_encode($user_meta_values)) ? \'Article inséré avec succès.\' : \'Une erreur est survenue lors de l\\enregistrement.\' ;
        }

    }

    else{
        foreach($err[\'msg\'] as $k=>$v)
            $output .= $v . \'<br />\';
    }
}
我的html表单:

<form method="post" action="<?php echo site_url().\'/ajouter\'; ?>">
    <p><label for="pseudo">Pseudo</label><input type="text" name="pseudo" id="pseudo" value="" /></p>
    <p><label for="mail">Mail</label><input type="text" name="mail" id="mail" value="" /></p>
    <p><label for="title">Titre</label><input type="text" name="title" id="title" value="" /></p>
    <p><label for="content">Article</label><textarea name="content" id="content" rows="10" cols="15"></textarea></p>
    <p><label for="keywords">Mots clés</label><input type="text" name="keywords" id="keywords" value="" />&nbsp;( séparez les mots clés par des virgules )</p>
    <p><input type="submit" name="submit" value="enregistrer" /></p>
</form>
有人知道我做错了什么吗?不知道为什么不起作用,

谢谢你的帮助

1 个回复
SO网友:Lulu

使用“tags\\u input”而不是“post\\u tags”。

请参见注释:http://codex.wordpress.org/Function_Reference/wp_insert_post

您可以使用wp\\u set\\u post\\u tags()函数:http://codex.wordpress.org/Function_Reference/wp_set_post_tags

结束

相关推荐

插件管理菜单中的EDIT-TAGS.php在活动页面时隐藏

对于我正在构建的插件,我在admin中的自定义主菜单项中添加了一个子菜单作为子菜单。子菜单页是edit-tags.php 页这将按预期显示在主菜单项下。单击此子菜单项时,用户将进入正确的页面,但主菜单项会向下折叠,隐藏当前打开的子菜单项。我最初的感觉是父slug属性是错误的,但我添加的其他子菜单使用相同的父slug属性,并且它们工作正常。很明显,我在add_submenu_page() 函数,但我不知道是什么。下面是我注册子菜单的方式:$this->plugin_screen_dashboard =