Skip Navigation

[Geschlossen] Filtrar usuario que hayan creado como mínimo una entrada

This support ticket is created vor 3 Jahre, 1 Monat. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

No supporters are available to work today on Toolset forum. Feel free to create tickets and we will handle it as soon as we are online. Thank you for your understanding.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 -
- 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 -

Supporter timezone: Europe/London (GMT+01:00)

This topic contains 7 Antworten, has 2 Stimmen.

Last updated by Nigel vor 3 Jahre, 1 Monat.

Assisted by: Nigel.

Author
Artikel
#1991901

Tengo un listado de usuarios que se dedican a crear unas entradas y necesitaria crear un filtro en una vista en donde se muetre los usuarios que han creado almenos una entrada y si en el caso que tengan mas entradas no aparezca repetido el usuario.
Los usuarios que todabia no hayan creado ninguna entrada no deberian aparecer.
Saludos.
Rafa Corts

#1993213

Nigel
Supporter

Languages: Englisch (English ) Spanisch (Español )

Timezone: Europe/London (GMT+01:00)

Hola Rafa

WordPress tiene una función count_user_posts que nos sirve: https://developer.wordpress.org/reference/functions/count_user_posts/

Puedes usarla en una condición para decidir si debe mostrar un usuario ó no (en la salida de una vista de usuarios).

Primero, tendrás que registrar la función en Toolset > Configuración > Contenido de front-end.

Entonces, en la salida de la vista puedes usar el shortcode wpv-conditional así:

		<wpv-loop>
          [wpv-conditional if="( count_user_posts( [wpv-user field='ID'], 'post', true ) gt '0' )"]
          <p>[wpv-user field="display_name"]</p>
          [/wpv-conditional]
		</wpv-loop>

Nota bien, tienes que especificar el tipo de entrada ('post' en este ejemplo).

#1996347
Captura de pantalla 2021-03-22 a las 17.16.34.png
Captura de pantalla 2021-03-22 a las 17.08.55.png
Captura de pantalla 2021-03-22 a las 17.09.01.png

Hola Nigel creo que he hecho todo lo que me has indicado pero no parece ningun resultado, en la funcion me indiacas que ponga el pots Type "primer-eso", tambien he registrado el nombre de la función "count_user_posts" y por último he creado una una vista y he modificado el loop.
te adjunto imagenes.
Saludos.
Rafa Corts

#1997165

Nigel
Supporter

Languages: Englisch (English ) Spanisch (Español )

Timezone: Europe/London (GMT+01:00)

¿Hay resultados de la vista?

Si quitas el shortcode wpv-conditional y simplemente mostrar el nombre, ¿salen unos usuarios?

¿Y puedes confirmar que tal usuarios son autor de unas entradas tipo primer-eso?

En el caso que sí, y se espera resultados, puedes añadir el atributo debug="true" al shortcode wpv-conditional que puede dar pistas.

#1997355

Hola Nigel, he quitado la condicion y he comprobado que muetre el nombre de los autores de cada entrada, he modificad un parametro.

<ul>
  <wpv-loop>
  <li>[wpv-post-author]]</li> 
</wpv-loop>
</ul>

Con este codigo se muetra un listado de los autores que han creado las diferentes entradas.
Ahora si aplico la condicional para que solo se muetre una sola vez el autor que haya creado mas de una sola entrada.
Deja de mostrar los resultados.

<ul>
  <wpv-loop>
  [wpv-conditional if="( count_user_posts( [wpv-user field='ID'], 'primer-eso', true ) gt '0' )" debug="true"]
  <li>[wpv-post-author]]</li> 
  [/wpv-conditional]
</wpv-loop>
</ul>

Y este es la información que aparece con el "Debug=true"

####################
wpv-conditional attributes
####################
Array
(
    [if] => ( count_user_posts( 16, 'primer-eso', true ) > '0' )
    [debug] => true
)

####################
Debug information
####################
--------------------
Original expression: ( count_user_posts( 16, 'primer-eso', true ) > '0' )
--------------------
After matching 1 numeric strings into real numbers: ( 0 > 0 )
	Matched '0' to 0

esta info se repite varias vezes.
Rafa Corts

#1997593

Nigel
Supporter

Languages: Englisch (English ) Spanisch (Español )

Timezone: Europe/London (GMT+01:00)

Hablamos de una vista que muestra usuarios, no una que muestra entradas, ¿verdad?

#1997609
Captura de pantalla 2021-03-23 a las 12.41.42.png

Hola Nigel hablamos de una vista que muestra el nombre del autor de las entradas. entonces yo lo he configurado como un "Post types", si lo cambio por usuarios luego no puedo hacer un filtro para que solo muetre los de una entrada en concreto.
Con la configuración que te he dicho adjunto imagen para que veas como lo tengo.
Sin la condición, aparece un listado de todos los autores que han creado una entrada del post type "primer-eso", y entiendo que con la condición que estamos configurando filtrará para que si un autor ha creado varias entradas solo aparezca una sola vez.
Rafa Corts

#1997737

Nigel
Supporter

Languages: Englisch (English ) Spanisch (Español )

Timezone: Europe/London (GMT+01:00)

Me parece que no hace sentido intentar implementar este con una vista que solicita entradas, solo hace sentido en el contexto de una vista que solicita y muestra usuarios.

Sin la condición, mostrará todos los usuarios con el rol especificado en la vista.

Con la condición, solo los usuarios que han publicado por lo menos una entrada del tipo especificado aparacerán, y solo una vez.

Das Thema „[Geschlossen] Filtrar usuario que hayan creado como mínimo una entrada“ ist für neue Antworten geschlossen.