通过前端表单插入图像和自定义数据

时间:2014-01-26 作者:gurung

我使用wordpress作为cms。我想从我的wordpress站点的前端通过表单插入自定义数据,然后在某个页面上的某个地方回显它。学习之后here and there 我能够把一个代码放在一起,在它下面工作。下面是我的表单当前的代码。

<form id="costing_submit_form" action="http://somesite.com/..../process-costing.php" method="post">
<input type="hidden" name="costing_submit_date" value="<?php echo $costing_submit_date;?>"/>        
<input type="text" id="costing_submit_title" name="costing_submit_title" size="90%" maxlength="150" /><br>
<textarea id="costing_submit_description" name="costing_submit_description" size="90%" cols="60" rows="10 tabindex="15" maxlength="2000" rows="20" required="" /></textarea>    
<input type="submit" class="costing_submit_button" name="costing_submit_button" value="SUBMIT COSTING" />
</form>
此时,我可以插入数据并使用$wpdb在前端显示它。这部分代码位于process-costing.php 将数据插入数据库表中。

global $wpdb; 
    require_once(\'../../../wp-load.php\');
    $costing_submit_date        = strip_tags($_POST[\'costing_submit_date\']);
    $costing_submit_title       = strip_tags($_POST[\'costing_submit_title\']);
    $costing_submit_description = strip_tags($_POST[\'costing_submit_description\']);
    $table_name = $wpdb->prefix . "costing";
    $wpdb->insert( $table_name, array(
    \'costing_date\' => $costing_submit_date,
    \'costing_title\' => $costing_submit_title,
    \'costing_description\' => $costing_submit_description,
    ));
现在,我想add an image to every entry made, 那么我该怎么做呢。如果没有一个完整的解决方案,请给我一个路线图,说明我应该做什么或遵循什么,我应该使用什么具体功能?即使我可以上传图片。我主要关心的是associate the uploaded image to that particular entry...可能是像post缩略图之类的?如果可能的话,我也想assign a particular folder 这些图像。提前谢谢。

1 个回复
最合适的回答,由SO网友:Jörn Lund 整理而成

对于图像上载,您可以使用wp_handle_upload(). 添加附件可以通过wp_insert_attachment(). 附件和成本项目之间的关联可以通过以下方式实现update_post_meta(). 旁白:以下划线开头的元键_ 没有显示在WordPress UI中。

您的代码可能如下所示:

<?php
$my_costing_id; /* contains the id of the corresponding item in your costing table */

// create attachment
$attachment_data = array(
    \'post_title\' => \'An Image\', 
    \'post_content\' => \'An Image\', 
    \'post_status\' => \'publish\', 
    \'post_mime_type\' => \'image/jpeg\', 
);
$attachment_id = wp_insert_attachment($attachment_data , \'path/to/uploaded/file.jpg\' );

update_post_meta( $attachment_id , \'_costing_id\' , $my_costing_id );
获取$costing_id 对应于已知$attachment_id 简单使用get_post_meta. 获取$attachment_id 对应的$costing_id, 您需要编写自己的SQL查询并将其传递给$wpdb:

<?php
$attachment_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_value=%d AND meta_key=%s") , $costing_id , \'_costing_id\' );
希望这有帮助,

问候j。

结束

相关推荐

修复wpdb::Prepare的插件

以前的一位开发人员为我管理的网站创建了一个插件,除了我得到错误“缺少wpdb::prepare()的参数2”之外,一切似乎都正常。我理解需要添加参数,但我不清楚如何将它们添加到这个特定代码中,或者在这种情况下添加什么参数。代码如下所示。任何指点都会很神奇。错误出现在第四个结束的花括号之后,在“$judgets=”之前。看起来查询现在应该是$wpdb->prepare,但在这个例子中,我不清楚如何在代码中实现它。更新时间:抱歉,我是个大傻瓜。下面的代码是插件的真实代码。我之前看过错误的代码行。$cat