enlace de la página HTTPS en el menú

2

Bien, tengo un sitio de wordpress con muchas páginas y menús que he definido en la sección de apariencia / menús de wordpress.

Una de mis páginas tiene un pequeño formulario de pago, al que me gustaría enlazar con enlace .. y para todos los otras páginas me gustaría que permanezcan como http.

Incluso si configuro un enlace absoluto a la página https, todas las demás páginas que son enlaces relativos se convierten en https también después de visitar esa página.

¿Hay un complemento o un truco o algo para especificar esa página como https?

Saludos, John.

    
pregunta John Hunt 25.05.2011 - 05:11

3 respuestas

3

Deberá convertir los enlaces relativos en enlaces absolutos. Puede hacer esto en el filtro wp_nav_menu_objects , que obtiene todos los elementos del menú. Solo edita la propiedad url de cada elemento.

Otra opción sería extender el Walker_Nav_Menu predeterminado con uno que reemplaza a start_el() , para que pueda modificar el $item pasado allí antes de pasarlo al elemento primario start_el() .

¿Estos son enlaces relativos que has agregado? Si agrega un enlace a una página o publicación de WordPress a través del editor de menú, debe ser absoluto de forma predeterminada.

    
respondido por el Jan Fabry 27.05.2011 - 17:30
3

Me gusta la primera idea de Jan: filtrar wp_nav_menu_options. Podría ser una buena solución versátil y se podría convertir rápidamente en un complemento. ¿Tal vez incluso agregar una casilla de verificación a la pantalla de edición que diga "Servir esta página a través de SSL" o algo así?

En el pasado, he usado una solución de redireccionamiento hacky con htaccess. Parece algo así como:

# Force a given page to https
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /your-ssl-page/$
RewriteRule ^(.*)$ https://www.example.com/your-ssl-page/ [R=301,L]

# Force everything BUT the given page to regular http
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/your-ssl-page/$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Esto funciona bien (y es muy fácil de implementar) si solo estás preocupado por una página, pero puede ser un verdadero dolor si tienes un montón de URI de HTTPS, o si no eres bueno en la resolución de problemas. reglas :)

    
respondido por el MathSmath 18.06.2012 - 17:05
1

Aquí hay un código para forzar SSL en páginas que no son SSL:

// Force SSL
if( !is_ssl() ){
    if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) {
    wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']));
    exit();
} else {
    wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit();
}

Básicamente, puede usar este código para forzar ssl en la (s) página (s) deseada (s) y hacer lo contrario para eliminar ssl para todas las demás páginas. Es posible que, en este caso, desee especificar el segundo parámetro de wp_redirect para habilitar un redireccionamiento 301 en lugar de un 302. También deberá asegurarse de que todos los enlaces apuntan a la versión https.

    
respondido por el Micah Wood 24.11.2011 - 16:44

Lea otras preguntas en las etiquetas