Похоже, Contact Forms 7 - это ваш плагин для части форм, а CFDB7 - это сопровождающий плагин, который записывает отправленные формы в базу данных WP.
Получить идентификатор формы
Есть несколько способов получить идентификатор формы. Похоже, что самый простой путь - посмотреть на короткий код, который создает CF7. Вы можете увидеть это в их документации здесь . Код похож на [contact-form-7 id="4" title="Foo"]
, где id - это идентификатор формы (в данном случае 4).
Показать правильную форму для нужного человека
Предполагая, что вы знаете идентификаторы пользователей и связанные с ними идентификаторы форм, которые вы хотите показать, вы можете написать очень простую шорткод плагин для отображения нужных форм для нужных людей. Это будет что-то вроде этого непроверенного кода ниже.
//[user-form-display]
function user_form_display( $atts ){
$user_id = get_current_user_id();
if ($user_id == 2){
echo do_shortcode('[contact-form-7 id="4" title="Foo"]');
} else if ($user_id == 4){
echo do_shortcode('[contact-form-7 id="88" title="Bar"]');
}
}
add_shortcode( 'user-form-display', 'user_form_display' );
Затем вы можете поместить шорткод в обычное поле сообщения и не редактировать ни плагин CF7, ни связываться с файлами тем.
Вы также можете сделать шорткод более интересным и т ie идентификаторы пользователей для формирования идентификаторов непосредственно в аргументах шорткода. Это займет немного больше усилий, но, вероятно, оно того стоит.
Получение данных формы Вы можете изменить $args
, добавив идентификаторы формы, основанные на связи с идентификатором пользователя или несколькими идентификаторами пользователя. Идентификаторы формы должны быть полями в этой таблице. Это пример, указанный ниже.
Кроме того, вы можете изменить способ возврата информации, основываясь на тех же отношениях, установив операторы if / then в строках $data_value
. Это, вероятно, проще, но в конечном итоге все сложнее.
function specfic_table_data()
{
global $wpdb;
$user_id = get_current_user_id();
if($user_id == 1){
$form_ids = array(4,6);//only returns forms with id 4 and 6 when it's user w id 1
}
$cfdb = apply_filters( 'cfdb7_database', $wpdb );
$data = array();
$table_name = $cfdb->prefix.'db7_forms';
$args = array(
'post_type'=> 'wpcf7_contact_form',
'order' => 'ASC',
'posts_per_page' => 10,
'post__in' => $form_ids,
);
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) : $the_query->the_post();
$form_post_id = get_the_id();
$totalItems = $cfdb->get_var("SELECT COUNT(*) FROM $table_name WHERE form_post_id = $form_post_id");
$title = get_the_title();
$link = "<a class='row-title' href=admin.php?page=cfdb7-list.php&fid=$form_post_id>%s</a>";
$data_value['name'] = sprintf( $link, $title );
$data_value['count'] = sprintf( $link, $totalItems );
$data[] = $data_value;
endwhile;
var_dump($data);
}