Mostrar enlaces a páginas de archivo basadas en valores de campos personalizados

4

Tengo un sitio web de contratación en el que quiero mostrar una lista de enlaces de Ubicación del Trabajo. La ubicación del trabajo ya se ha ingresado en un campo personalizado para cada publicación, así que solo quiero mostrar una lista de enlaces que, al hacer clic, mostrará las publicaciones con solo el valor personalizado ingresado, es decir,

Inglaterra Irlanda Estados Unidos etc.

Haga clic en el enlace de un país arriba y vea todas las publicaciones que tienen el país en cuestión agregado como un valor de campo personalizado.

    
pregunta Leon Quinn 04.10.2010 - 16:18

1 respuesta

3

Recomendaría utilizar una taxonomía personalizada para esto, no un campo personalizado. Puede ordenar y listar archivos basados en una taxonomía mucho más fácilmente que por campos personalizados.

Sin embargo, si desea hacer una lista según el campo personalizado, tendrá que modificar los argumentos enviados a query_posts() en su página de archivo para pasar los meta_key y meta_value que está buscando por.

Para agregar su 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
}

Luego, tus enlaces permanentes para el archivo se convertirán en algo parecido a http://mycoollocationsite.com/location/england http://mycoollocationsite.com/location/ireland http://mycoollocationsite.com/location/usa ... etc ...

A continuación, deberá agregar el valor que se pasó a su ubicación 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

    }
}

Supongo que está almacenando sus datos personalizados en un campo llamado location ... así que cámbielo si me equivoco.

Pero esto le permitirá filtrar sus archivos en función de una ubicación específica. Si también quieres habilitar los archivos basados en la fecha, esto requerirá algunas reglas adicionales en mi primer bloque de código (en este momento, esto mostrará una lista de todas publicaciones con un location meta_key) .

Sin embargo, recomiendo usar una taxonomía personalizada en su lugar. Es más limpio, más extensible y requiere menos codificación personalizada. Esta es también exactamente la situación para la cual se crearon taxonomías personalizadas ... así que, por favor, no reinvente la rueda ...

    
respondido por el EAMann 04.10.2010 - 16:39

Lea otras preguntas en las etiquetas