post_id siempre está mal en el complemento

4

Estoy tratando de hacer que dos complementos trabajen juntos donde uno de ellos pone una etiqueta alrededor de cada título con una función de filtro. Quiero que excluya las publicaciones de otro plugin que tienen post_type personalizado (ai1ec_event). Pero no puedo obtener el tipo de publicación si la identificación es incorrecta.

add_filter('the_title', 'mealingua_title_filter', 10);
function mealingua_title_filter($title) {
   $post_id = get_the_ID();
   #some stuff
   if (is_front_page() OR is_single() OR is_page()) {
        return '<span class="mealingua_title_container_' . $post_id . ' mealingua_title_container">' . $title . '</span>';
    } else {
        return $title;
    }
 }

Pero el post_id siempre está mal en algunos lugares. Uno es el menú de navegación en la parte superior. El otro es el plugin que quiero arreglar. Allí el id es siempre el de la última publicación del sitio. Intenté las siguientes alternativas sin éxito:

global $post;
$post_id= $post->ID;
global $wp_query;
$post_id = $wp_query->post->ID;

¿Cómo puedo solucionar esto? ¿Que puedo hacer? Estoy dispuesto a meterme con el código de cualquiera de los complementos pero, aunque sé PHP, no tengo experiencia con la codificación de complementos de wordpress. Gracias por cualquier ayuda.

    
pregunta blues 20.08.2012 - 13:36

2 respuestas

0

No puede usar get_the_ID() cuando no está en el bucle (por ejemplo, en los menús de navegación). Afortunadamente, el filtro the_title viene con el ID de la publicación en un argumento adicional.

Cambie su código a esto, para que funcione en todos los lugares:

function mealingua_title_filter($title, $post_id) {

  #some stuff
  if (is_front_page() OR is_single() OR is_page()) {
    return '<span class="mealingua_title_container_' . $post_id . ' mealingua_title_container">' . $title . '</span>';
  } else {
    return $title;
  }
}

add_filter('the_title', 'mealingua_title_filter', 10, 2);
    
respondido por el Jeroen Schmit 12.10.2016 - 14:31
0

¿Por qué no obtienes ID desde permalink? Eso es posible. Puede verificar si la ID de la publicación no existe para verificar mediante la URL de análisis de enlace permanente o directamente verifique GET si el enlace permanente está desactivado. WP tiene muchas maneras de obtener una identificación.

También puedes usar esta función:

enlace

    
respondido por el Ivijan Stefan Stipić 11.07.2016 - 00:08

Lea otras preguntas en las etiquetas