十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
/**
创新互联公司服务项目包括苍溪网站建设、苍溪网站制作、苍溪网页制作以及苍溪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,苍溪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到苍溪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
* WordPress 添加额外选项字段到常规设置页面
*/
$new_general_setting = new new_general_setting();
class new_general_setting {
function new_general_setting( ) {
add_filter( 'admin_init' , array( $this , 'register_fields' ) );
}
function register_fields() {
register_setting( 'general', 'favorite_color', 'esc_attr' ); add_settings_field('fav_color', 'label for="favorite_color"'.__('最喜欢的颜色' ).'/label' , array($this, 'fields_html') , 'general' ); }
function fields_html() {
$value = get_option( 'favorite_color', '' ); echo 'input type="text" id="favorite_color" name="favorite_color" value="' . $value . '" /'; }
}
把A表指定的x字段数据更新到B表的y字段”的话,我猜你没弄清楚wp_posts表和wp_postmeta表是一对多的关系,你看下这个SQL语句是否可以?
UPDATE wp_posts p, wp_postmeta pm SET pm.meta_value = p.post_title WHERE pm.post_id = p.ID AND pm.meta_key = "title";
这里最后 pm.meta_key = "title" 的 title 是 meta_value 对应的 meta_key 的值。
自定义域的值都是写入 post_meta 的,你写入 posts 与 wordpress 的开发理念违背
能实现功能就行,不明白你为什么搞这么复杂
1、 在comments.php评论表单中添加自己想要的字段,如:
p
input type="text" name="tel" id="tel" size="22" tabindex="4" /
label for="tel"电话/label
/p
tabindex 这个属性按照从小到大排,为什么要这样?你可以自己试试….
2、如果评论表单是使用系统自带的,那么请用以下方法添加表单字段,如果不是,请略过
add_filter('comment_form_default_fields','comment_form_add_ewai');
function comment_form_add_ewai($fields) {
$label1 = __( '国家/地区' );
$label2 = __( 'Skype账号' );
$label3 = __( '电话' );
$label4 = __( '传真' );
$label5 = __( '地址' );
$value1 = isset($_POST['guojia']) ? $_POST['guojia'] : false;
$value2 = isset($_POST['skype']) ? $_POST['skype'] : false;
$value3 = isset($_POST['tel']) ? $_POST['tel'] : false;
$value4 = isset($_POST['fax']) ? $_POST['fax'] : false;
$value5 = isset($_POST['address']) ? $_POST['address'] : false;
$fields['guojia'] =HTML
p
label for="guojia"{$label1}/label
input id="guojia" name="guojia" type="text" value="{$value1}" size="30" /
/p
HTML;
return $fields;
}
3、 接收表单字段并写入数据库
在主题目录的 functions.php添加以下代码
add_action('wp_insert_comment','wp_insert_tel',10,2);
function wp_insert_tel($comment_ID,$commmentdata) {
$tel = isset($_POST['tel']) ? $_POST['tel'] : false;
//_tel 是存储在数据库里的字段名字,取出数据的就会用到
update_comment_meta($comment_ID,'_tel',$tel);
}
这两步就可以将数据写入数据库了,不信你试试看
add_action()参数中的10和2分别表示该函数执行的优先级是10(默认值,值越小优先级越高),该函数接受2个参数。
4、在后台显示额外字段
前面两步只是接收和写入到数据库,那么要怎么在后台评论列表中显示呢?将以下代码复制到主题目录的functions.php 中:
add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
function my_comments_columns( $columns ){
$columns[ '_tel' ] = __( '电话' ); //电话是代表列的名字
return $columns;
}
function output_my_comments_columns( $column_name, $comment_id ){
switch( $column_name ) {
case "_tel" :
echo get_comment_meta( $comment_id, '_tel', true );
break;
}
如果要在前台的留言列表中调用,就用以下代码,_tel就是你在数据库中存储的字段名字
?php
$tel = get_comment_meta($comment-comment_ID,'_tel',true);
if( !empty($tel)){
echo "电话".$tel;
}
?
5、 大功告成,看看后台的评论列表,是不是多了一列电话,那样的话就没错了。
6、如果要移除某一个自带的表单字段,可以使用以下代码
function tel_filtered($fields){
if(isset($fields['tel']))
unset($fields['tel']);
return $fields;
}
add_filter('comment_form_default_fields', 'tel')