Mostrar categorías aleatorias en la portada (Búsqueda y edición de funciones temáticas)

8

Actualmente estoy en las etapas alfa de editar un tema secundario para un tema de Wordpress. Tengo experiencia en programación y algo de experiencia en la gestión de WordPress, pero no tengo experiencia directa en la edición de código relacionado con WordPress. En este momento, actualmente muestra las primeras tres categorías alfabéticamente.

Lo que estoy tratando de hacer: en lugar de mostrar las primeras tres categorías alfabéticamente, me gustaría mostrar 3 categorías aleatorias con más de x número de productos.

Me he encontrado con los siguientes obstáculos / preguntas que me impiden continuar.

  1. ¿Qué mecanismo / función controla la selección de estas categorías? (Su código)
  2. ¿Está basado en temas o algo en el sistema subyacente de WordPress?
  3. ¿Qué otra información sería relevante para hacer este cambio?
  4. ¿Qué información sería útil de Firefox Dev Bar?
  5. ¿Cómo encuentro "TheyCode" para poder reemplazarlo con "MyCode"?

La verdadera pregunta aquí es: ¿Cómo encuentro "TheyCode", que es responsable de esta selección utilizando herramientas como Firefox Dev Bar y la fuente real?

Esta pregunta no se trata de WooCommerce (el complemento). Estoy buscando una manera de encontrar una función en un tema que WooCommerce (la compañía) diseñó o en cualquier tema realmente.

Tema de código abierto: WooCommerce Storefront

T. Thomas
fuente
2
Busque etiquetas con clases específicas o categorías de ajuste de id con Firefox Developer Inspector. Luego, busque esta clase o id en los archivos fuente del tema. Debería encontrar algún tipo de función que muestre categorías. Sobrescribir la función o utilizar el filtro de función para reemplazar categorías.
kierzniak

Respuestas:

11

La verdadera pregunta aquí es: ¿Cómo encuentro "TheyCode", que es responsable de esta selección utilizando herramientas como la barra de desarrollo de Firefox y la fuente real?

Si se está refiriendo a la salida / fuente HTML, entonces, por ejemplo, en el sitio de demostración oficial del tema Storefront , simplemente haga clic derecho en el encabezado o sección "Categorías de productos" y luego puede inspeccionarlo fácilmente section. Consulte el documento de MDN para ver otras opciones, como el icono "Seleccionar elemento".

ingrese la descripción de la imagen aquí

Ahora para " la fuente real " (es decir, el código PHP o la función que genera la sección "Categorías de productos" en las páginas que usan la plantilla "Página de inicio"), puede encontrarla en inc/storefront-template-functions.php.

if ( ! function_exists( 'storefront_product_categories' ) ) {
    /**
     * Display Product Categories
     * Hooked into the `homepage` action in the homepage template
     *
     * @since  1.0.0
     * @param array $args the product section args.
     * @return void
     */
    function storefront_product_categories( $args ) {

        if ( storefront_is_woocommerce_activated() ) {

            $args = apply_filters( 'storefront_product_categories_args', array(
                'limit'             => 3,
                'columns'           => 3,
                'child_categories'  => 0,
                'orderby'           => 'name',
                'title'             => __( 'Shop by Category', 'storefront' ),
            ) );

            ...
        }
    }
}

También lo storefront_product_categories()es la función PHP que está buscando y que puede anular por completo si lo desea (consulte https://docs.woocommerce.com/document/set-up-and-use-a-child-theme/# sección-5 ). Pero si solo desea mostrar las categorías de productos en una ordenación aleatoria, simplemente puede usar storefront_product_categories_argspara filtrar los argumentos de la consulta (que en su caso sería orderby):

add_filter( 'storefront_product_categories_args', function( $args ){
    $args['orderby'] = 'rand';
    return $args;
} );

Ese filtro se llama desde la storefront_product_categories()función, y estos son los otros filtros / acciones que puede usar:

  • Filtrar: storefront_product_categories_shortcode_args

  • Acción: storefront_homepage_before_product_categories

  • Acción: storefront_homepage_after_product_categories_title

  • Acción: storefront_homepage_after_product_categories

Vea esto si no está seguro de las diferencias entre una "acción" y un "filtro".


ACTUALIZACIÓN: ¿Cómo podría encontrar el código?

Explore la documentación del tema de Storefront :

Estoy buscando una manera de encontrar una función en un tema que WooCommerce (la compañía) diseñó o en cualquier tema realmente.

  • Primero, verifique (y lea) la documentación del tema.

  • Si ninguno o que usted no / no podía encontrar la información que necesitaba, a continuación, intente lo @motivast habían sugerido - Inspeccionar los elementos de la página, encontrar el código HTML correspondiente y / o CSS class/ id, a continuación, buscar en los archivos de tema para ese HTML o CSS class/ idhasta que encuentre el archivo correcto o el código PHP / function.

Por ejemplo, en el sitio de demostración del tema Storefront, el HTML de la sección de categorías de productos es:

<section class="storefront-product-section storefront-product-categories" aria-label="Product Categories">
    ...
</section>

Para que pueda buscar en los archivos de tema con una de estas palabras clave: (Comenzaría por la coincidencia más específica o más cercana al HTML generado)

  • <section class="storefront-product-section storefront-product-categories"

  • class="storefront-product-section storefront-product-categories"

  • storefront-product-categories

  • storefront-product-section

Suponiendo que no conocía la documentación de Storefront / theme, realizar las búsquedas anteriores eventualmente lo llevaría al archivo correcto o al código PHP / function.

Si necesita más ayuda, avíseme y actualizaré esta respuesta en consecuencia.

Sally CJ
fuente
La parte actualizada de la respuesta no funciona con el escaparate 2.5.0 Ni siquiera los ejemplos de filtro dados en su propio sitio de documentación.
klewis 05 de