es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WordPress reemplaza el shortcode antes de que se inicialice el plugin.

Uso WordPress con Cornerstone y Essential Grid.
Quiero configurar una plantilla de página que tenga un URL-parámetro, por ejemplo: localhost/info/template/?id=1
En esta página tengo una cuadrícula esencial.

Cuando id = 1 quiero mostrar la cuadrícula esencial mygrid1, cuando id = 2 quiero cargar la cuadrícula mygrid2.

Intenté reemplazar el shortcode con
js
document.getElementById("myGrid").innerHTML = mynewGrid

Pero en este punto, la cuadrícula ya está inicializada y es demasiado tarde. También reemplazar el shortcode en functions.php (tema hijo) es demasiado tarde.
Así que hice un nuevo plugin. Tenía la intención de que mi nuevo plugin se cargue antes de que se cargue el plugin de cuadrícula esencial.

php
function createDynamicContent(string $content)
{
if (is_page('1209')) {
Da el procesamiento, etc...

Carga el nuevo shortcode desde la base de datos, basado en el URL-parámetro
luego reemplaza el shortcode ficticio con el nuevo shortcode real usando $content
el shortcode ficticio es mydummy
el $mynewgrid es la cadena para la nueva cuadrícula [ess_grid alias="berge"][/ess_grid]

php
$newContent = str_replace("mydummy", $mynewgrid, $content);
$content = $newContent;
return $content;
}

Añadí esta función:

php
add_filter('the_content', 'createDynamicContent', 10);

También intenté

php
add_action( 'the_content', 'createDynamicContent', 100, 3);

Cuando establezco el parámetro de prioridad en 100, el ficticio se reemplaza en la fuente pero la cuadrícula no se carga.
Cuando establezco el parámetro de prioridad en 1, la página se rompe.

¿Tengo alguna posibilidad de reemplazar dinámicamente el shortcode?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución para configurar una plantilla de página con parámetro de URL y shortcode dinámico en WordPress

    Para configurar una plantilla de página con un parámetro de URL y un shortcode dinámico en WordPress, puede seguir estos pasos:

    1. Cree un nuevo plugin en WordPress y agregue la siguiente función al archivo del plugin:
      function createDynamicContent($content)
      {
         if (isset($_GET['id'])) {
             $mynewgrid = '';
             $id = intval($_GET['id']);
      
             if ($id == 1) {
                 $mynewgrid = '[ess_grid alias="mygrid1"]';
             } else if ($id == 2) {
                 $mynewgrid = '[ess_grid alias="mygrid2"]';
             }
      
             if (!empty($mynewgrid)) {
                 $newContent = str_replace('mydummy', $mynewgrid, $content);
                 return $newContent;
             }
         }
      
         return $content;
      }
      

      Esta función cargará dinámicamente el shortcode según el parámetro de URL y lo reemplazará en el contenido.

    2. Agregue el filtro the_content al archivo de su plugin con una prioridad de 100 para que se cargue antes del plugin Essential Grid.

      add_filter('the_content', 'createDynamicContent', 100);
      

    3. En su plantilla de página, agregue el shortcode dummy [mydummy] donde desee cargar Essential Grid.
    4. Acceda a la página con el parámetro de URL /info/template/?id=1 para cargar Essential Grid con el alias mygrid1, o /info/template/?id=2 para cargar Essential Grid con el alias mygrid2.

    Con estos pasos, puede cargar dinámicamente Essential Grid según el parámetro de URL en WordPress.

Comments are closed.