我在Wordpress中有一个会员网站,该网站是使用名为“成员”的自定义帖子类型构建的。
[出于多种原因,我们使用cron作业来运行并使用来自单独数据库的数据来填充这些CPT字段,(对于公司而言,使用标准WP数据库存储其数据是不可行的。
该数据库从MS Access开始,被导出到WP数据库内的单独表中,然后cron作业从该数据库中提取数据并将其添加到CPT数据库中。
在cron作业文档中,我们有这样的行:
update_field( 'memberimage', $members->webpic, $post_id );
update_field( 'description', $members->description, $post_id );
update_field( 'phone_number', $members->telno, $post_id );
update_field( 'email_address', $members->email, $post_id );
update_field( 'website_address', $members->web, $post_id );
显然是从数据库中的字段中获取数据,并将其添加到我们在CPT等中创建的字段中,等等。
[对于每个成员,在后端,我创建了一个带有高级自定义字段的下拉列表(字段名称:gold_or_silver_member
,具有金或银的选择选项),将其标记为白银成员。
银色是默认值,如果它们是金色,则各种条件的东西都会在其目录页面上显示更多功能。
在我们要从中提取的数据库中,照看它的列称为webtier
,因此在数据库级别,数据库用户在该字段中添加数字2表示成员是silver,在该字段中添加数字3成员是金。
我正在尝试以上述方式从数据库中获取此数字,并将其输出以在ACF中为每个成员返回黄金或白银。
我们已经有此行:
update_field( 'gold_or_silver_member', 'Silver', $post_id );
我认为默认使所有成员都变成银色,所以我认为逻辑仅需说:
如果数据库字段中的数字,Webtier为3,则将ACF字段更改为gold
我仍然认为...
老实说,我有点坚持,我是从目前的情况下无法联系到的其他人那里得到的,所以我的任务是解决这个问题...任何人都可以帮忙和建议我?
完整的cronjob.php文件为:
<?php
include('wp-config.php');
global $wpdb;
$taxonomy="business_sector";
$members = $wpdb->get_results("SELECT dep.* FROM directory_enteries_partnership as dep where status=0 ");
$i=1;
foreach($members as $members){
//echo $members->webcat;
//echo "<br>";
$category = $wpdb->get_row("SELECT * FROM directory_categories_partnership as dcp where maincategory=$members->webcat");
//echo "$i";
//echo "<br>";
//$i++;
//echo "<pre>";
//print_r($category);
$term = get_term_by('name',$category->description,$taxonomy);
// echo "<pre>";
//print_r($term);
// print_r($members);
// //die;
$address = $members->address1.' '.$members->address2.' '.$members->town.' '.$members->postcode;
$my_post = array(
'post_title' => $members->orgname,
'post_type' => 'members',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array( $term->term_id ),
);
// Insert the post into the database
$post_id = wp_insert_post( $my_post );
wp_set_post_terms($post_id,$term->term_id,$taxonomy);
update_field( 'logoimage', $members->weblogo, $post_id );
update_field( 'address', $address, $post_id );
update_field( 'memberimage', $members->webpic, $post_id );
update_field( 'description', $members->description, $post_id );
update_field( 'phone_number', $members->telno, $post_id );
update_field( 'email_address', $members->email, $post_id );
update_field( 'website_address', $members->web, $post_id );
update_field( 'show_as_new_member', 'No', $post_id );
update_field( 'show_as_featured_member', 'No', $post_id );
update_field( 'gold_or_silver_member', 'Silver', $post_id );
$field_key = "social_media_accounts";
$value = array(
array(
"social_network_name" => "Facebook",
"url" => $members->facebook
),
array(
"social_network_name" => "Twitter",
"url" => $members->twitter
)
);
update_field( $field_key, $value, $post_id );
$wpdb->update(
'directory_enteries_partnership',
array(
'status' => 1
),
array( 'id' => $members->id )
);
// die;
}
?>
非常感谢任何帮助或建议!!感谢您的关注。
替换此行update_field( 'gold_or_silver_member', 'Silver', $post_id );
使用此代码:
$webtier = members->webtier;
$membership = 'Silver';
if ($webtier == 3) $membership = 'Gold';
update_field( 'gold_or_silver_member', $membership, $post_id );