Respuestas de foro creadas

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • No creo que encuentres algo tan especifico, creo que perderías menos tiempo si lo desarrollas a medida.

    Hola, a ver si he entendido.

    Tienes un directorio de médicos, los cuales serán entradas en la web, si cada médico es una entrada en el directorio puedes resolverlo de la siguiente forma.

    crea un campo personalizado en las entradas, de forma que para cada médico puedas agregar la ciudad en la que se encuentra.

    ahora por ejemplo para rellenar un select en e lcual se muestren las ciudades que aya algun médico registrado puedes utilizar algo como esto.

    <?php
     global $wpdb;
     $ciudades_medic = '';
     $ciudades_medic = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT meta_value
       FROM {$wpdb->postmeta}
       WHERE meta_key = 'campo_ciudad'
       ORDER BY    meta_value ASC
     "));
    ?>
    
    <select class="search-select" id="ciudad" name="ciudad">
    	<?php
    		foreach ( $ciudades_medic as $ciudad )
    			echo "<option value='" . $ciudad->meta_value . "'>" . $ciudad->meta_value . "</option>";
    	?>
    </select>

    Con este código rellenas un select en el cual se mostraran todas las ciudades en las que se haya agregado algún médico.

    Esto sería tipo formulario junto con los demás campos del criterio de busqueda, luego estos datos se recogen en el archivo searchform.php por ejemplo y se realiza otra consulta con los criterios seleccionado y se devuelven los resultados.

    Como ves si lo quieres hacer con código propio es un poco complicado, revisa este plugins quizas te sirva: WP Custom Fields Search

    Un Saludo.

    Ya he solucionado el tema, trataré de explicar como lo hice, igual le puede servir a alguien más.

    1- He creado una función en el archivo function.php, la cual recibe la ID de la categoría por parámetro, este es el código de la función.

    <?php
    function itemAcordeon($ID_cat){	?>
       <h3>
          <?php echo get_cat_name($ID_cat);?>
          <small><?php echo $post_count;?></small>
       </h3>
       <div class="item">
          <?php
          $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
          $args = array(
             'cat' => $ID_cat,
             'paged' => $paged,
             'order' => ASC,
             'posts_per_page' => 15
          );
    
             $query = new WP_Query($args);
             $post_count = $query->post_count;
    
             if ( $query->have_posts() ) : while ( $query->have_posts() ) :
             $query->the_post();
          ?>
    
             <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <h2>
                   <a>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
                </h2>
    
                <div class="entry" >
                   <?php the_excerpt();?>
                </div>
    
                <?php if ( has_post_thumbnail() ) { echo '<div class="featured-thumbnail">'; the_post_thumbnail(); echo '</div>'; } ?>
             </div> <!-- final post destacados -->
    
    	   <?php endwhile; endif; ?>
    	</div>
    <?php }?>

    Esta función muestra un listado, donde muestro el titulo de cada categoría con sus respectivas entradas. Para mostrar este listado he creado una plantilla personalizada para esta categoría con el siguiente código.

    <!-- Inicio acordeón -->
    <div id="accordion">
       <?php
       $ID_cat = get_query_var('cat');
       $child_cats = (array) get_term_children( $ID_cat, 'category' );//Pasa ID + tipo a mostrar (page - post - category -etc)
       $count_cat = count($child_cats);
    
       if ($count_cat > 0) {
          for ($i=0; $i < $count_cat ; $i++) {
    	itemAcordeon($child_cats[$i]);
          }
    
       }?>
    </div>
    <!-- Final acordeón -->

    Explico un poco el código:

    $ID_cat = get_query_var('cat'); Con esta línea capturamos el ID de la categoría actual y lo guardamos en esta variable.

    $child_cats = (array) get_term_children( $ID_cat, 'category' );
    Creamos un array el cual contendrá las categorías hijas de $ID_cat.

    if ($count_cat > 0) {
          for ($i=0; $i < $count_cat ; $i++) {
    	itemAcordeon($child_cats[$i]);
          }

    Por último creamos un for el cual llamara la función tantas veces como categorías hijas tenga la categoría actual.

    Esta es la solución con la que he conseguido mostrar un acordeón de jQuery UI, donde el titulo del cada acordeón es un nombre de una sub categoría, y el contenido de cada acordeón, es un listado de post de dicha categoría.

    Pueden ver esto en funcionamiento en esta web: surf-In

    Espero le sirva a alguien más, un saludo.

    Para eliminar las etiquetas debes modificar tu plantilla, no te digo que archivo debes modificar, por que desconozco la estructura de la plantilla que utilizas.

    Pero para esto debes eliminar el código que muestra las etiquetas o bien ocultarlo con css.

    Elegante theme suele dejar estas opciones en el panel del theme, si no te da la opción de agregar más botones desde el panel de opciones de la plantilla, seguro tendrás que tocar el código.

    Si se puede hacer perfectamente.

    Creas una plantilla personalizada para páginas de wordpress y utilizas esta consulta:

    <?php
       $args = array('author' => 5);
       $query_autor = new WP_Query($args);
    
       if($query_autor->have_posts()) :
          while($query_autor->have_posts()) :
             $query_autor->the_post();
    ?>
       <!-- Maquetado del los post -->
    
    <?php endwhile; else:?>
       <p>Texto si no ha agregado ningun post</p>
    <?php endif;?>

    Solo debes cambiar el id del usuario a mostrar. Si lo quieres poner un poco más fácil, puedes crear un campo personalizado e insertar el id del usuario en ese campo para obtener su valor en la variable author de la consulta.

    No estoy seguro si te respondo lo que querías.

    también se pueden combinar dos widget para hacerlo sin crear plantilla personalizada.

    si no quieres crear plantilla, lo comentas y te digo como hacerlo con un shortCode.

    Un saludo.

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)