Mostrar enlaces a páginas de archivo basados ??en los valores de campos personalizados

wordpress.stackexchange https://wordpress.stackexchange.com/questions/2545

  •  16-10-2019
  •  | 
  •  

Pregunta

Tengo un sitio web de reclutamiento en el que quiero mostrar una lista de enlaces Localización del empleo. El lugar de trabajo ya se ha entrado en un campo personalizado para cada puesto, así que sólo quiero mostrar una lista de enlaces que al hacer clic se mostrará mensajes con sólo eso entró valor personalizado, es decir, -

Inglaterra Irlanda Estados Unidos etc ..

Haga clic en un enlace de país por encima y ver todos los mensajes que tienen el país en cuestión como un valor añadido campo personalizado ??

¿Fue útil?

Solución

Yo recomiendo usar una taxonomía personalizada para esto, no un campo personalizado. Puede ordenar y archivos de la lista basada en una taxonomía mucho más fácilmente que por campos personalizados.

Sin embargo, si desea lista basada en el campo personalizado, que vas a necesidad de modificar los argumentos enviados a query_posts() en su página de archivo de pasar en el meta_key y meta_value está buscando por.

Para añadir la variable de consulta:

add_action('init', 'add_custom_meta_url');
function add_custom_meta_url() {
    global $wp,$wp_rewrite;
    $wp->add_query_var('location');
    $wp_rewrite->add_rule('location/([^/]+)','index.php?location=$matches[1]','top');
    $wp_rewrite->flush_rules(false);  // This should really be done in a plugin activation
}

A continuación, los enlaces permanentes para el archivo se convertirá en algo en la línea de http://mycoollocationsite.com/location/england http://mycoollocationsite.com/location/ireland http://mycoollocationsite.com/location/usa ... etc ...

A continuación, tendrá que añadir cualquier valor que fue pasado en su lugar a la consulta real:

add_action('parse_query', 'apply_custom_meta_to_query');
function apply_custom_meta_to_query(&$query) {
    if (isset($query->query['location'])) {
        $query->query_vars['meta_key'] = 'location';
        $query->query_vars['meta_value'] = $query->query['location'];
        unset($query->query_vars['location']);            // You don't need this

    }
}

Estoy asumiendo que usted está almacenando sus datos personalizados en un campo llamado location ... lo que el cambio que si estoy equivocado.

Pero esto le permitirá filtrar los archivos basado en una ubicación específica. Si desea habilitar archivos basados ??en fecha con esto, así que va a requerir algunas reglas adicionales en mi primer bloque de código (en este momento, esto podría mostrar una lista de todos postes con un meta_key location).

Sin embargo, recomiendo el uso de una taxonomía personalizada en lugar. Es más limpio, más extensible, y requiere menos codificación personalizada. Esto también es exactamente la situación para la que fueron creados taxonomías personalizadas ... así que por favor, no reinventar la rueda ...

Licenciado bajo: CC-BY-SA con atribución
scroll top