Complemento de WordPress: enganche en la URL personalizada

3 minutos de lectura

Quiero hacer un complemento, que usaré para algunos jQuery AJAX carga de datos de tabla.

Tengo una función que imprime los datos correctamente, pero ¿cómo me “engancho” a una URL específica?

Por ejemplo, quiero que se ejecute la función y que los datos se impriman cada vez que se ejecute una solicitud a /mycustomplugin/myurl.php. (Tenga en cuenta que la URL/archivo no debe existir)

No tengo experiencia con los complementos de WP.

avatar de usuario
zarazan

Para filtrar su URL personalizada antes de que WordPress comience a ejecutar consultas para otras cosas, use algo como esto:

add_action('parse_request', 'my_custom_url_handler');

function my_custom_url_handler() {
   if($_SERVER["REQUEST_URI"] == '/custom_url') {
      echo "<h1>TEST</h1>";
      exit();
   }
}

  • Por alguna razón, esto solo funciona en el front-end, probablemente usaría un gancho de acción diferente, no estoy seguro de cuál (wp contra admin_init).

    – Nabil Kadimi

    22 de julio de 2014 a las 12:29

  • Siendo totalmente ignorante acerca de la API de WordPress, tendré que preguntar: ¿Dónde debería poner este código? Me gustaría usar este método en un complemento y no quiero editar archivos preexistentes de WP, sino solo los archivos de mi complemento.

    – Nadie

    22/10/2015 a las 19:20


  • ESTÁ BIEN. He puesto en mi archivo de conexión (dentro wp-content\plugins) tal como está, activé el complemento, pero no funciona… 🙁 Me pregunto por qué…

    – Nadie

    22/10/2015 a las 19:39


  • @NoOne no puede usar el complemento sin inicializar los códigos antes de usarlo. De todos modos, puedes poner este código en tu tema. function.php expediente . PD @zarazan que usas parse_request para que se ejecute antes de que WP comience a procesar la ruta de la URL, etc., para que la URL no obtenga la página de error WP 404.

    – Salem

    19 mayo 2016 a las 18:26

  • La idea es buena, pero esta acción no funciona por alguna razón. Lo buscaré para WP 5.7.

    – travieso

    21 de mayo de 2021 a las 9:39

Un simple

if ($_SERVER["REQUEST_URI"] == '/mycustomplugin/myurl.php') {
  echo "<my ajax code>";
}

Debería hacer maravillas.

  • Esto solo funciona bien si no desea utilizar ninguna funcionalidad de WordPress en su solicitud. Se ejecutaría antes de init.

    – Mikael Groen

    27 de mayo de 2019 a las 6:05

  • Se olvidó de especificar dónde se podría colocar esta URL.

    – Bobo

    6 ago 2021 a las 23:32

Si desea devolver datos regulares de wordpress, simplemente puede incluir wp-blogheader.php en su archivo php personalizado de esta manera


//Include WordPress 
define('WP_USE_THEMES', false);
require('Your_Word_Press_Directory/wp-blog-header.php');
query_posts('showposts=10&cat=2');

Simplemente use etiquetas temáticas regulares para devolver el contenido que desea. Este

Sin embargo, ¿de dónde provienen los datos de su tabla? ¿Está tratando de mostrar esta información en el lado del administrador o en el lado del espectador?

Consulte también un desglose completo de llamadas a funciones enganchadas con wp_ajax http://codex.wordpress.org/AJAX_in_Plugins

add_action( 'init', 'my_url_handler' );

function my_url_handler() {
     if( isset( $_GET['unique_hidden_field'] ) ) {
          // process data here
     }
}

usando add_action( 'init', 'your_handler') es la forma más común en los complementos desde esta acción se activa después de que WordPress haya terminado de cargarse, pero antes de que se envíen los encabezados. La mayor parte de WP se carga en esta etapa y el usuario se autentica.

¿Ha sido útil esta solución?