¿Cómo fuerzo programáticamente los enlaces permanentes con mi tema?

2

Estoy haciendo un tema personalizado. Es un tema altamente especializado para convertir WordPress en una aplicación en lugar de un sistema o blog de CMS. Por ejemplo, un sistema de programación de consultorio dental (con capacidades de CMS y widget), como ejemplo.

Debido a que mi tema necesita URL bonitas para funcionar correctamente, algo que realmente necesito es que el archivo .htaccess sea el predeterminado que se crea solo cuando alguien establece Permalinks en Personalizado (y luego escribe algo como% postname%). ¿Cómo puedo activar eso en WordPress, programáticamente, para que cree esto? Es decir, probablemente podría sobrescribir el archivo durante la activación del tema, pero lo mejor sería usar la API de WordPress para ello.

    
pregunta Volomike 13.12.2011 - 06:01

2 respuestas

2

Para habilitar completamente los enlaces permanentes, también debe asegurarse de que también se cree .htaccess. Para hacer eso, necesitas establecer una opción y eliminar las reglas con un booleano.

global $wp_rewrite; 

//Write the rule
$wp_rewrite->set_permalink_structure('/%postname%/'); 

//Set the option
update_option( "rewrite_rules", FALSE ); 

//Flush the rules and tell it to write htaccess
$wp_rewrite->flush_rules( true );

Si usa esto en un complemento, debe estar en el gancho init , not el enganche load . Si está en el gancho de load , lanzará un error diciendo que $wp_rewrite es nulo.

Importante: También debes tener un condicional, por lo que solo se establece una vez. (Puede crear una opción y verificar si está configurada, de lo contrario, ejecute este código de enlace permanente y configure esa opción)

Por lo general, también verifico si es el lado de administración y solo lo ejecuto si es.

    
respondido por el Don Rhummy 22.10.2015 - 07:03
4
function change_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure('/%postname%/');
    $wp_rewrite->flush_rules();
}
add_action('init', 'change_permalinks');

Es posible que no necesite el enlace de acción si está pegando esto en su código de función de activación de tema.

También encontré que esto solo funcionó ligeramente. Todavía tiene que hacer clic en la página de configuración de Permalinks para crear ese archivo .htaccess. ¿Entonces lo que hay que hacer? Bueno, descubrí que podía usar un IFRAME que carga esa página automáticamente desde el panel de opciones de mi tema, y luego crearía ese archivo .htaccess para mí.

<iframe style="position:absolute;top:-5000px" src="<?= site_url() ?>/wp-admin/options-permalink.php"></iframe>
    
respondido por el Volomike 20.12.2011 - 23:32

Lea otras preguntas en las etiquetas