我在Wordpress中使用联系人表7 pugin。我需要用一个MySQL DB中的“作物”填充一个Select,根据所选的字段,第二个选择必须填充这个作物的“品种”。
我知道使用CF7条件字段是可能的,但有53种作物和400多个品种。所以,这将是DB和联系人形式中的许多字段。
我认为应该使用ajax,但我对此一无所知,我也找不到任何例子来学习使用ajax + CF7 + Wordpress。我想做的是对MySQL (Select variedad from cultivos where cultivo = 'id_cultivo')进行查询,并使用结果填充select。
有人知道我是怎么做到的吗?
发布于 2018-03-14 17:51:54
我需要用MySQL DB中的“作物”填充Select
使用用于CF7的智能网格插件扩展中的动态下拉字段。
它允许您使用一组现有的post或分类法填充您的下拉列表,否则iit还能够使用钩子填充,因此如果您的“作物”位于自定义表中,则可以构建自定义sql。
根据所选作物的不同,第二个选择必须填充这种作物的“品种”。
所以这更棘手。使用分类法填充的动态下拉列表允许您构建jquery select2下拉列表,这样可以更容易地搜索长的选项列表,而且,如果您的分类法是分层的(2层深度),它将使用父级术语作为下拉列表中的选项组,而实际选项将是子选项。因此,你可以把你的“作物”和“品种”组织起来,把它们归类为父母-.没有品种的作物只会有一个品种,您的下拉列表将允许用户在特定类别中选择一个品种。
这将使在表单上设置更简单,而不需要隐藏下拉列表。它还具有更高的可伸缩性和可维护性,因为每当您更新作物/品种术语时,它都会动态地反映在表单中,而不必更改表单。
我希望所有这些都是有意义的。如果您想进一步探索这一点,您可以在插件支持论坛上发布。
发布于 2018-03-15 11:05:43
为了解决我的麻烦,我做了以下几行:
在js文件中:
jQuery(document).ready(function($) {
$("#idsubfamilia").change(function(e) {
e.preventDefault();
jQuery.post(MyAjax.url, {action : 'buscar_posts' ,cadena : $('#idsubfamilia').val() }, function(response) {
// $('#variedad_container').hide().html(response).fadeIn();
$('#variedad_container').hide().html(response).fadeIn();
});
});
});在functions.php中(感谢http://masquewordpress.com/como-utilizar-ajax-correctamente-en-wordpress/):
/* AJAX */
// Primero incluimos nuestro archivo javascript definido anteriormente
wp_enqueue_script( 'mi-script-ajax',get_bloginfo('stylesheet_directory') . '/js/ajax-search.js', array( 'jquery' ) );
// ahora declaramos la variable MyAjax y le pasamos el valor url (wp-admin/admin-ajax.php) al script ajax-search.js
wp_localize_script( 'mi-script-ajax', 'MyAjax', array( 'url' => admin_url( 'admin-ajax.php' ) ) );
//Para manejar admin-ajax tenemos que añadir estas dos acciones.
//IMPORTANTE!! Para que funcione reemplazar "buscar_posts" por vuestra action definida en ajax-search.js
add_action('wp_ajax_buscar_posts', 'buscar_posts_callback');
add_action('wp_ajax_nopriv_buscar_posts', 'buscar_posts_callback');
function buscar_posts_callback() {
global $wpdb;
$subfamilia=$_POST['cadena'];
//$datos = $wpdb->get_results('SELECT id, subfamilia_' . $idioma . ' FROM wp_custom_subfamilias ORDER BY subfamilia_' . $idioma);
$datos = $wpdb->get_results("SELECT variedad FROM wp_custom_variedad where subfamilia_fk='".$subfamilia."' ORDER BY variedad");
echo '<ul>';
echo '<select name="selectVariedad" id="idSelectVariedad">';
foreach ($datos as $dato) {
echo "<option value='".$dato->variedad."'>".$dato->variedad."</option>";
}
echo '</select>';
echo '</ul>';
die(); // Siempre hay que terminar con die
}https://stackoverflow.com/questions/49277808
复制相似问题