$ post-> ID muestra una ID incorrecta
-
-
¿Estátratando de obteneresaidentificaciónespecífica,o deseatener alguna _funcionalidadgeneral_ que se ocupe de lasidentificaciones?Sielprimeroesel caso,puede usar `get_option ('page_for_posts');`.Are you just trying to get that specific ID, or do you want to have some _general functionality_ dealing with the IDs? If the first is the case, you could use `get_option('page_for_posts');`.
- 1
- 2013-08-08
- tfrommen
-
Estabatratando de obtenerel valor demetabox,por lo que lafuncionalidadgeneral se ocupa de los ID,detodosmodosestá resuelto ahora,¡graciaspor sutiempo!I was trying to get metabox value, so general functionality dealing with the IDs, anyways it's resolved now, thanks for your time!
- 0
- 2013-08-08
- Wordpressor
-
Aquí hay un hilo similar: https://wordpress.stackexchange.com/questions/150192/at-my-posts-archive-page-outside-the-loop-get-the-id-returns-the-top-most-poHere's a similar thread: https://wordpress.stackexchange.com/questions/150192/at-my-posts-archive-page-outside-the-loop-get-the-id-returns-the-top-most-po
- 0
- 2019-03-05
- Pikamander2
-
1 respuesta
- votos
-
- 2013-08-08
Enesapágina,$post-> ID devuelveel ID de laprimerapublicación deblog dada página.
Asíes comofunciona.
$post
seestableceen laprimerapublicación delbucle. Enpublicaciones ypáginas únicas que seaniguales a lapublicación opágina. En laspáginas de archivo,es laprimerapublicaciónen el conjunto de resultados. Y sipiensasen eso,ambos son realmente lomismo. Laspublicaciones ypáginasindividuales solotienen un resultadoen el conjunto que coincide con lapublicación o lapágina queesperas.Ahora,laparte complicada,heintentadoeliminartodos losbucles detodosmis páginas,archivo loop.phptotalmenteborrado,desactivótodos los widgets que podría haberestado afectando a $post y aún devuelveel IDincorrecto.
La consultaprincipal seejecuta antes de que se cargue laplantilla y
$post
se configuraen eseproceso. Eliminarelementos de laplantillano cambiaráeso.¿Algunapista?
Sí. No confíeen
$post
excepto dentro de unbucle adecuado. Sinecesitainformación sobre lapáginaen sí,utilice:$pobj = get_queried_object(); var_dump($pobj); // debugging
Referencia:
http://codex.wordpress.org/Function_Reference/get_queried_object
On that page $post->ID returns the ID of first blog post for given page.
That is how it works.
$post
is set to the first post in the Loop. On single posts and pages that is the same as the post or page. On archive pages it is the first post in the result set. And if you think about that, both are really the same thing. Single posts and pages only have one result in the set which happens to match the post or page that you expect.Now, the tricky part, I've tried to remove all the loops from all my pages, totally erased loop.php file, disabled all the widgets that might have been affecting $post and it still returns the wrong ID.
The main query runs before your template loads and
$post
is set in that process. Removing things from the template won't change that.Any hints?
Yes. Don't rely on
$post
except inside a proper Loop. If you need information about the page itself use:$pobj = get_queried_object(); var_dump($pobj); // debugging
Reference:
http://codex.wordpress.org/Function_Reference/get_queried_object
-
Inteligente,nunca antes había oído hablar deesta solución.Clever, I have never heard about this solution before.
- 0
- 2013-08-08
- Wordpressor
Esteesbastanteextraño.
Este código:
Muestrael ID correcto cada vez,excepto lapágina delblog (lapágina configurada comoblogen/wp-admin/options-reading.php).
Enesapágina,$post-> ID devuelveel ID de laprimerapublicación deblogpara lapágina determinada.
Ahora,laparte complicada,heintentadoeliminartodos losbucles detodasmispáginas,borrétotalmenteel archivo loop.php,deshabilitétodos los widgets quepodrían haberestado afectando a $post ytodavía devuelve la IDincorrecta.
¿Algunapista?
Miindex.phpesbastanteestándar:
Yel loop.phpes:
¿Quizáselproblemaes queestoytratando de obtenerel IDen header.php?
Y sí,
wp_reset_postdata()
noparece ayudartambién:/