WooCommerce Snippet: Comprobar si WooCommerce está activado

En el post anterior comenté la forma de saber si WooCommerce está instado.

Ahora bien, si en lugar de eso queremos saber si está activado para realizar algún proceso en el que necesitemos que está activo y no sólo instalado, podemos utilizar el siguiente código.

Sobra decir que, tanto este código como el del post anterior, lo podemos adaptar a cualquier otro plugin del que necesitemos conocer si está instalado o activado.

Seguimos…

WooCommerce Snippet: Comprobar si WooCommerce está instalado

Si queremos saber si está instalado el plugin de WooCommerce en el WordPress en cuestión sobre el que vamos a realizar alguna tarea contra WooCommerce o lo necesitamos porque vamos a desarrollar algún plugin para WooCommerce y no debería de activarse si WooCommerce no está instalado, podemos utilizar el siguiente código para saber si está instalado y tomar las medidas oportuna en caso contrario.

Espero que os sea de utilidad.

Seguimos…

Establecer el tiempo de expiración del token de la rest api de WordPress

Para este caso estamos utilizando el plugin JWT Authentication for WP REST API que nos facilita el trabajo a la hora de configurar la autenticación a través de la rest API de WordPress.

Si queremos establecer un tiempo de expiración personalizado para el token y que después de ese tiempo ya no se pueda utilizar y el usuario no pueda acceder, podemos hacerlo a través del siguiente código utilizando el filtro «jwt_auth_expire»:

Cambiar el valor de $expire a vuestras necesidades. Siempre teniendo en cuenta que se trata de segundos.

En el ejemplo lo he establecido a 1 hora.

Saludos y ánimo.

Newsletter Gucomers #51 – WooCommerce 6.4 a las puertas

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Semana tranquila en cuanto a novedades sobre WooCommerce pero ya estamos con la vista puesta en hoy mismo puesto que se supone que hoy mismo se libre la versión 6.4 de WooCommerce.

No puedo dejar de mencionar el artículo que ha publicado Fernando Tellado sobre la posibilidad de vender marihuana y derivados a través de internet. Es muy interesante y está muy bien documentado. Echadle un vistazo aunque solo sea para saber un poco más sobre este mundillo.

Sin más. La newsletter seguirá publicándose hasta que yo considere oportuno. Vamos allá!

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Cómo vender online marihuana, cogollos, semillas CBD

Cómo administrar pedidos en WooCommerce

Cómo mostrar un mensaje de «Hay x personas viendo este producto» en tu tienda online WooCommerce

¿Cómo elegir un hosting para WooCommerce?

Cómo crear un embudo de ventas en WooCommerce

Aumentar la seguridad en WooCommerce

Cómo agregar la fecha de entrega en WooCommerce

Como incrustar Google Calendar en WooCommerce

Cómo crear productos reservables en WooCommerce

Como mostrar tiempo de entrega en tus productos WooCommerce

WooCommerce en Inglés

WooCommerce: Only Allow to Buy a Product Once

WooCommerce Blocks Roadmap Update – Q1/Q2 – 2022

How to Add Product Image Magnifier to WooCommerce

WooBits: Updates, Mollie, WooFunnels, Trust Widget, App Builder and Not so Fast

A DevChat on WooCommerce Support

How to Add Delivery Date in WooCommerce

WooCommerce: Remove “Clear” Button @ Variable Product Page

Do the Woo v3.3

Breaking change notice: woocommerce_emogrifier hook

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Newsletter Gucomers #50 – ¡50 nada menos!

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Parece que fue ayer cuando me dio por crear esta newsletter y mira tu, ya han pasado 50!!

Aquel 1 de marzo del que hace algo más de un año y que durante todo este tiempo he conseguido mantener semanalmente aunque si que es cierto que alguna semana no ha podido ser por el motivo que sea.

Sabiendo que es una simple recopilación de artículos y tutoriales relacionados con WooCommerce durante la semana, creo que está muy bien y no solo para ofrecerlo a la gente que puede estar interesada sino más bien, para obligarme de alguna manera a estar al día de los últimos cambios en el desarrollo de WooCommerce así como tener alguna referencia en algún momento dado a algún problema en concreto que me surja.

Sabiendo esto, animo a todas aquellas personas a crear este tipo de publicaciones de la manera que consideren más acertada o más sencilla de tal forma que os sirva para estar al día con las temáticas que o materias que gestionáis en vuestro trabajo diario y que os interesa no perder el hilo. Anímate!

Sin más. La newsletter seguirá publicándose hasta que yo considere oportuno. Vamos allá!

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Cómo configurar PayPal en WooCommerce

Cómo configurar los impuesto en WooCommerce

Cómo ofrecer descargas gratuitas en WooCommerce

Cómo agregar productos virtuales a WooCommerce

Cómo crear una página de “Próximamente” (Coming Soon) en WooCommerce

Cómo mostrar los precios CON y SIN impuestos en tu tienda online con WooCommerce

WooCommerce en Inglés

WooCommerce Blocks 7.3.0 Release Notes

WooCommerce: How to Set Up Order Delivery Slots

How to Add Product Designers to WooCommerce

WooCommerce Dev Chat with JJJ

WooCommerce: Disable Single Search Result Redirect

WooCommerce 6.4 RC

WooCommerce Fastest Themes in 2022

Best WooCommerce Request a Quote Plugins for 2022

How to Manage Orders on WooCommerce

Sustainable Web Design, Now and in the Future

WooBits: Core Updates, Selling WooCommerce and Public Perceptions

Best Tips to Improve Design of WooCommerce Stores

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Newsletter Gucomers #49 – Woocommerce 6.4 beta 1

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Ya ha comenzado la marcha atrás para la liberación de la versión 6.4 de WooCommerce y entre los cambios o mejoras que se llevarán a cabo cabe resaltar la implementación de tablas personalizadas para los pedidos. Si tienes curiosidad sobre esta implementación, puedes consultar este enlace donde se explica en detalle este cambio en concreto y cómo afectará a nuestro WooCommerce.

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Tips para mejorar las tasas de conversión en WooCommerce

Cómo agregar pestañas de productos personalizadas en WooCommerce

Cómo agregar productos de subasta en WooCommerce

Como omitir la página del carrito en WooCommerce

Cómo agregar un botón solicitar cotización en WooCommerce

WooCommerce en Inglés

WooCommerce: How to Enhance the Product Gallery

How to Integrate DHL Shipping with WooCommerce

How to Add Swatches to a WooCommerce Product

How to Create Bookable Products in WooCommerce

A Builders Path to WooCommerce and a Place Where Code is Therapy

Reese Spykerman, Ecommerce Consultant, Talks About Shopping Cart Abandonment

WooCommerce 6.4 Beta 1

WooCommerce: Which PayPal Gateway Plugin is Better?

WooCommerce: Display Prices Inc + Ex Tax

Mobile Marketing for eCommerce — How to Capture, Engage, and Convert More Traffic

How to Add WooCommerce Request a Quote Button

Store API is now considered stable

How to run an affiliate campaign with Influencers in your WooCommerce Store

How to Fix a Slow WooCommerce Store and Speed It Up

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Crear posts y traducciones en WordPress para WPML con código

En el tutorial crear un posts de WordPress con código te explicaba mismamente eso, pero en esta ocasión vamos a ir un poco más allá para crear no sólo el post o la entrada sino que vamos a crear, publicar y conectar las traducciones de un mismo post.

Creo que no hace falta decirlo pero vaya usted a saber. Necesitas tener instalado WPML y para el ejemplo que te voy a mostrar, 3 idiomas configurados en WPML. En este caso yo tengo configurados «español», «inglés» y «euskera».

El idioma que he configurado como «principal» o «por defecto» en WPML es «español».

Aclarado esto, vamos al lío:

Lo que voy a hacer es crear una función donde crear el contenido de cada post: «título», «contenido» y «estado». Almaceno el contenido de cada idioma en un array para crear cada unos de los posts por separado y luego ya los conectaré.

Por ejemplo, para crear el contenido en español:

    $post_original_es = array(
        'post_title'    => 'Título del post en español',
        'post_content'  => 'Contenido del post en español y bla, bla, blac...',
        'post_status'   => 'publish'       
    );

Y para crear el contenido en inglés:

    $post_traducido_en = array(
        'post_title'    => 'My post title - English',
        'post_content'  => 'My post content in english and ble, ble, ble...',
        'post_status'   => 'publish',
    );

De momento no pongo el de euskera porque es más de lo mismo pero en otro idioma.

Como puedes observar, creo un array con el contenido que quiero, un array por cada idioma.

De momento no he publicado nada, sólo he creado esos arrays para preparar el contenido que publicaré.

Ahora voy a utilizar la función wp_insert_post() que ya usé en el tutorial que te comentaba al inicio. Lo que hace es precisamente eso, crear el post en WordPress y como el estado está establecido a «publish», pues los publicará, de esta forma:

$post_original_es_id = wp_insert_post( $post_original_es );
$post_traducido_en_id = wp_insert_post( $post_traducido_en );

Con estas dos líneas que acabo de poner, lo que hago es publicar dos posts, cada uno con su información. Pero ¡Ojo! todavía no están conectados. Cada uno va a su bola, ahora mismo no tienen nada que ver el uno con el otro.

Pues bien, este código mas el relativo al tercer idioma, lo metemos en una función y al final de la misma devolvemos un array con estos 3 arrays de posts.

function nuevos_posts_para_publicar() {
    $output = array(); // array que contendrá los posts para publicar
 
    // Crear el post original en español
    $post_original_es = array(
        'post_title'    => 'Título del post en español',
        'post_content'  => 'Contenido del post en español y bla, bla, blac...',
        'post_status'   => 'publish',
    );
 
    // Crear el contenido del post para inglés
    $post_traducido_en = array(
        'post_title'    => 'My post title - English',
        'post_content'  => 'My post content in english and ble, ble, ble...',
        'post_status'   => 'publish',
    );
    // Crear el contenido del post para euskera
    $post_traducido_eu = array(
	'post_title'    => 'Nire mezuaren izenburua - Euskara',
	'post_content'  => 'Nire mezuaren edukia euzkaraz eta bleu, bleu, bleu...',
	'post_status'   => 'publish',
    );
 
    // Insertar los 3 posts en la base de datos con wp_insert_post();
    $post_original_es_id = wp_insert_post( $post_original_es );
    $post_traducido_en_id = wp_insert_post( $post_traducido_en );
    $post_traducido_eu_id = wp_insert_post( $post_traducido_eu );
 
    return $output = array(
        'original' => $post_original_es_id,
        'traduccion_en' => $post_traducido_en_id,
	'traduccion_eu' => $post_traducido_eu_id
    );
}

Hasta el momento todo bien. Puedes ejecutar este código para que lo que hacer y te darás cuenta que crea un post en cada idioma, sin más. Todavía no hay magia.

Ahora vamos a crear otra función que hará la conexión entre los 3 posts, el original en español y los otros dos en inglés y euskera.

Esta función recogerá lo que ha retornado la función anterior como $output y lo recoge, por ejemplo así:

$nuevos_posts_ids = nuevos_posts_para_publicar();

Perfecto, ya tengo los tres posts en la nueva función para trabajar con ellos.

En primer lugar establecemos el tipo de elemento con un el filtro wpml_element_type de WPML de esta forma:

$wpml_element_type = apply_filters( 'wpml_element_type', 'post' );

Ahora, obtengo información del idioma original para usarlo más adelante. De esta forma:

$get_language_args = array('element_id' => $nuevos_posts_ids['original'], 'element_type' => 'post' );
$original_post_language_info = apply_filters( 'wpml_element_language_details', null, $get_language_args );

Como ves, uso el filtro wpml_element_language_details de WPML.

Ahora que ya tengo los detalles del idioma orginal (español), voy a establecer los detalles de los otros dos idiomas pero para este ejemplo pongo solo uno, ya lo tendrás todo al final del tutorial.

$set_language_args_en = array(
   'element_id'    => $nuevos_posts_ids['traduccion_en'],
   'element_type'  => $wpml_element_type,
   'trid'   => $original_post_language_info->trid,
   'language_code'   => 'en',
   'source_language_code' => $original_post_language_info->language_code
);

Ya ves. Simplemente creo un array con una serie de información que nos va a hacer falta, como el id del post, el tipo, que ya había establecido anteriormente, el código del idioma y el idioma original.

Por último, ejecuto una acción de WPML con los argumentos que acabamos de establecer para inglés. De esta forma:

do_action( 'wpml_set_element_language_details', $set_language_args_en );

De esta forma, WPML ya sabe qué post tiene que conectar y con qué post.

Más información sobre wpml_set_element_language_details.

Ya lo tienes todo para crear traducciones a manta.

Lo suyo sería crear un «trigger» para que se ejecutara esta función pero este caso es algo diferente ya que que si lo dejamos así y lo metemos en el ‘wp_footer‘ pues no pararía de crear posts y eso no interesa.

Como hace poco publiqué un post sobre cómo crear cron jobs en WordPress, pues me he tomado la libertad de añadir para que puedas probarlo y ejecutar el cron cuando quieras y vayas viendo los resultado. Pero eso si, como esto es algo más «gordo», no nos quedaríamos aquí sino que tal vez habría que añadir código para que se borraran todos los posts antes de crear los nuevos.

Lo que molaría es sincronizar los posts. Que es el caso. El mío, me refiero. La información de los posts la traemos de una base de datos externa que no tiene nada que ver con WordPress pero tenemos un campo para saber cuando se hizo el último cambio del contenido y así, comparando ese campo con el correspondiente campo en nuestro WordPress, podemos saber si tenemos o no tenemos que eliminar ese post y crearlo de nuevo. Cuando digo post, me refiero al post en los 3 idiomas, ok?

Pero bueno, de lo que se trata es de que lo pruebes y lo entiendes y para eso creo que con un cron job es suficiente.

A continuación tienes todo el código:

Espero que te haya gustado este tutorial y no dejes de comentarme cosas relacionadas con este tutorial, ok?

Venga, mucho ánimo!

Newsletter Gucomers #48 – WooCommerce Blocks 7.2

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Semana tranquila hemos tenido. Sin mucha noticia en cuanto a el desarrollo de WooCommerce. Lo único la liberación de la versión de 7.2 de WooCommerce Blocks que incluye algunos cambios a nivel de desarollo.

Por otro lado si que merece comentar la compra de YITH por parte de Newfold. Tenéis más información en este enlace. Interesante. ¿No os da la sensación de que ultimamente hay bastante movimiento de compra/venta en el entorno WordPress? Será cosa mía.

Venga, os dejo una serie de recursos para que le echéis un vistazo y espero que os sirvan de ayuda.

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Cómo añadir un mini carrito (gratis) a tu tienda online WooCommerce

Variaciones de productos WooCommerce: Problemas comunes

¿Cómo eliminar pedidos de WooCommerce?

Colocar la página “Tienda” WooCommerce como su página de inicio

Cómo excluir el producto WooCommerce de los cupones

Cómo exportar pedidos en WooCommerce

Cómo mostrar precios al por mayor en WooCommerce

WooCommerce en Inglés

How to Backup Your WooCommerce Store

How to Add an Upsell to the WooCommerce Cart

WooCommerce Blocks 7.2.0 Release Notes

WooCommerce: Display Customer Address @ Order Pay

How Writing Skills Can Help You as a Developer

A Detailed Guide on Using WordPress and WooCommerce Roles and Capabilities

How to Test WooCommerce Checkout and Payments

How to Add Custom Product Tabs in WooCommerce

How to Use WooCommerce as a Catalog

Working Support as a Happiness Engineer at WooCommerce

How to Create Custom User Role from an Existing WordPress & WooCommerce User Role

WooBits: Acquisition, $1.7T and Extending to WooCommerce

How to Change Add to Cart Text WooCommerce Guide with Examples

How to Back Up WooCommerce Database

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Cómo autorrellenar un campo select de Advanced Custom Fields con datos de una página de opciones

Te pongo en situación.

Tenemos un campo de tipo «Select» en un grupo de ACF pero, por el motivo que sea, no disponemos de los datos o diferentes opciones que podrá seleccionar el usuario en ese campo. Normalmente, en una caso «normal», rellenaríamos las opciones del campo «select» directamente desde la edición del campo de ACF pero puede darse el caso de que esos valores u opciones no las tengamos a nuestra disposición en el momento de crear el campo «select» sino que pueden ser valores que dependan de alguna otra opción o que incluso los estemos calculando o recogiendo de otros sitios o campos. No se si me explico bien… Espero que me entiendas.

Una opción para poder hacer esto puede ser utilizar un campo de una página de opciones. Éste campo es posible que lo rellenemos «a mano» pero también es posible que lo hagamos a través de alguna función, etc…

Bueno, voy a comentar esta opción. Autorrellenaremos el campo «select» con los datos de un campo de tipo «texarea» que tenemos en una página de opciones.

Por el momento he creado una página de opciones bien sencilla con el siguiente código:

add_action('acf/init', 'oaf_otra_pagina_opciones');
function oaf_otra_pagina_opciones() {
	// Comprobar si existe la función acf_add_options_page
	if( function_exists('acf_add_options_page') ) {
			acf_add_options_page(array(
				'page_title'    	=> 'Opciones',
				'menu_title'    	=> 'Opciones',
				'menu_slug'     	=> 'opciones',
				'capability'    	=> 'edit_posts',
				'update_button' 	=> 'Actualizar',
				'updated_message' => 'Las opciones se han guardado',
				'redirect'      	=> false
			));
	}
}

Y posteriormente he creado un grupo de campos con un campo de tipo «select». He asignado este grupo de campos a la página de opciones que acabo de crear así:

Cómo autorrellenar un campo select de Advanced Custom Fields

Y para que quede claro, el campo no tiene ningún valor asignado:

Cómo autorrellenar un campo select de Advanced Custom Fields

Ahora sólo faltaría disponer y tener a mano la información del misterioso campo «Select» del que tanto estoy hablando. Por ejemplo, pongamos:

Cómo autorrellenar un campo select de Advanced Custom Fields

Ya vemos que no tiene ninguna opción establecida.

Ahora vamos al lío…

En el «texarea» de la página de opciones voy a añadir algunas opciones de esta manera:

Cómo autorrellenar un campo select de Advanced Custom Fields

Si, ya se. Nada de original. Es lo que hay, que hay prisa…

Ahora es cuando viene lo bueno, lo interesante. El código que hará esta magia por nosotros.

Antes de mostrar los resultados de este código, aluna puntualización:

Utilizamos el filtro «acf/load_field» que, en resumen, se lanza cuando se cargan los campos. Podemos utilizarlo sin más para que se ejecute algo cada vez que se cargue un campo, cualquier campo pero lo más lógico es limitarlo a un campo en concreto, un tipo de campo, etc…

A continuación, algunas opciones:

  • acf/load_field => Se aplica a todos los campos
  • acf/load_field/type={$type} => Se aplica a todos los ficheros de un tipo específico
  • acf/load_field/name={$name} => Se aplica a los campos con un nombre específico
  • acf/load_field/key={$key} => Se aplica a los campos con una clave específica

Como puedes ver, hay muchas opciones y variantes que podemos emplear.

Como decía, en este filtro ejecutamos una función que lo que hace es recoger las líneas del campo textarea que tenemos en la página de opciones, convertirlo en array y devolver este array para que el filtro haga la magia.

Con esto que he hecho, podemos ver que, efectivamente se autorellena el campo select que queremos.

Cómo autorrellenar un campo select de Advanced Custom Fields

Y no solo eso sino que, cuando se cambie el contenido del campo textarea de la página de opciones, al cargar el campo select, se actualizarán las opciones automaticamente ya que se alimenta del contenido de ese campo:

Cómo autorrellenar un campo select de Advanced Custom Fields

Y, el resultado:

Cómo autorrellenar un campo select de Advanced Custom Fields

Mola, ¿verdad?

Pues a partir de aquí, lo que te apetezca. Que te parecería que en lugar de tomar los campos de un textarea de la página de opciones, lo tomara de todas las opciones de un campo de otro grupo de ACF? ahí te lo dejo porque es interesante y divertido. Si te interesa esto último, me dices y saco un rato para hacer otro tutorial.

Espero que este tutorial te sea de utilidad y que te anime a seguir profundizando en el desarrollo tanto con ACF como con WordPress.

Nos vemos en otra ocasión

Newsletter Gucomers #47 – WooCommerce 6.3 y patch de seguridad 6.3.1

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

La semana pasada se liberó la versión 6.3 de WooCommerce con algunas actualizaciones. En concreto se añadió la versión 6.9 de WooCommerce Blocks y la versión 3.2.1 de WooCommerce Admin entre otros cambios y mejoras pequeñas.

Pero al poco de esta liberación, WooCommerce sacó un nuevo patch de seguridad, en este caso la versión 6.3.1.

En estos casos en los que se nota el tiempo de respuesta por parte de WooCommerce para responder a algún tipo de fallo o código incorrecto. Estoy contento, claro que si

Como todas las semanas, te dejo un buen número de recursos sobre WooCommerce que pueden ser de tu interés.

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Plugin de revisión de productos para WooCommerce

¿Qué es la escalabilidad de WooCommerce? ¿Como funciona?

Cómo agregar un producto de suscripción de WooCommerce

Cómo configurar ventana emergente de cookies en WooCommerce

Cómo configurar la lista de deseos y la vista rápida de WooCommerce

Plugins de códigos de barras y códigos QR para WooCommerce

Cómo crear un mini carrito de WooCommerce

Cómo pausar su tienda WooCommerce

Personalización de la página de tienda con el theme Storefront

Cómo crear cupones en WooCommerce 2022

Actualización de seguridad importante y urgente de WooCommerce relacionada con PayPal estándar

WooCommerce en Inglés

Pricing and Value of Your WooCommerce Product

WooCommerce: How to Add Breadcrumbs

WooCommerce: Automatically Register Guest Checkouts

How to Create a WooCommerce Coming Soon Page

New Episodes, Woo BuilderBytes in Beta

How to Add Lead Time to WooCommerce

WooCommerce 6.3 Released

What to Expect from the WooCommerce Custom Order Table Update

The Growth of WooCommerce in Small and Larger businesses

How to Set Up WooCommerce On your WordPress Website

WooCommerce: How to Enable Distraction-free Checkout

WooCommerce 3.5.10–6.3.1 Security releases

WooBits: 6.3, Confusing Security, and Marketplaces

How to Add Auction Products in WooCommerce

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Cómo crear tareas programadas en WordPress ( cron jobs)

Las tareas programadas son muy útiles en ciertos casos.

Habrá tareas que necesites que se ejecuten cada cierto tiempo sin tener que estar pendiente de ejecutarlas tu mismo/a en esos momentos. Eso es inviable, no podemos estar pendientes en ciertos momentos para ejecutar una función que necesitamos que se ejecute en cierto momento o en ciertos momentos.

Pues bien, para eso, WordPress dispone de un mecanismo que nos permite programar la ejecución de tareas o funciones en código y es muy sencillo como verás a continuación.

Antes, debo avisarte de que las tareas programadas de WordPress no son como las que puedas programar a nivel de servidor ya que las de WordPress dependen de que tengas visitas o por decirlo de otra forma. Si no tienes visitas en el momento en que tienes programada la tarea, no se ejecutará en ese momento sino que se ejecutará en el momento que tenga lugar la primera visita después de esa programación. En cambio, los cron jobs que configuras a nivel de servidor no depende de esto sino que se ejecutarán en el momento preciso. Pero en este tutorial te voy a enseñar cómo puedes crear tareas programadas en WordPress, la otras las dejaremos para otro tutorial si te parece interesante.

Al lío. Para crear una tarea programada en WordPress, crearemos un hook y le asignaremos una función que queramos que se ejecute.

Para este ejemplo he creado el hook «cron_borrar_todos_posts» y le asigno la función «oaf_borrar_todos_posts» de esta manera:

add_action('cron_borrar_todos_posts', 'oaf_borrar_todos_posts');

Ahora lo que tenemos que hacer es crear un evento o programación para decirle a WordPress que cree esa programación en el momento y la periodicidad de la misma como por ejemplo:

wp_schedule_event((strtotime('24:00:00')), 'daily', 'cron_borrar_todos_posts');

Con esto le estamos diciendo a WordPress que todos los días, a las 24 horas ejecute la función «cron_borrar_todos_posts«.

Para más información sobre wp_schedule_event(), haz click por aquí.

También te animo a que le eches un vistazo a la función wp_get_schedules() para que entiendas mejor la parte de las recurrencias de las tareas programadas.

No está de más añadirle un condicional para asegurarnos de que no existe ya esa tarea programada de esta forma:

if (! wp_next_scheduled('cron_borrar_todos_posts')) {
	wp_schedule_event((strtotime('24:00:00')), 'daily', 'cron_borrar_todos_posts');
}

Como ves es muy secillo.

Ah, bueno, nos falta la función que va a ejecutar. Para este ejemplo he creado una función que borra todos los posts:

function oaf_borrar_todos_posts(){
	$todos_posts = get_posts( array('post_type'=>'post','numberposts'=>-1) );
	foreach ($todos_posts as $unpost) {
		wp_delete_post( $todos_posts->ID, true );
	}
}

Y para que que lo tengas todo en un mismo sitio y ordenado, te dejo el código completo en un gist:

Personalmente me parece una herramienta muy útil para ciertos casos que yo mismo uso según para qué.

En otro tutorial te voy a enseñar un plugin para poder ver y semi-gestionar estas tareas programadas de WordPress y así puedas tener una visión más gráfica de lo que está ejecutando WordPress y cuando.

Sin más, nos vemos…

Cómo crear una página de opciones en WordPress con Advaced Custom Fields. De básico a avanzado

Este es un tutorial que lo podéis encontrar por la web en un montón de sitios y me parece muy bien, cuanto más información mejor.

Entonces, si hay tanta información sobre esto en la web, ¿Porqué hacer otro tutorial sobre lo mismo?

Con este tutorial pretendo, no sólo que sepas crear una página de opciones con ACF sino que quiero que entiendas algunas cosas que puedes hacer para hacer páginas de opciones más avanzadas, con sub-páginas, configurarlas a tu gusto o incluso ubicarlas en lugares diferentes del back de WordPress. Pero eso si, iré paso a paso y veremos algunos casos y ejemplos para que todo fluya y nos enteremos bien de lo que estamos haciendo y sobre todo de lo que podemos hacer.

¿Qué con las páginas de opciones de WordPress?

Las páginas de opciones son páginas que se usan el en backend de WordPress para alojar diferente contenido pero normalmente tendrán opciones o ajustes que se puedan realizar sobre algunas funcionalidades de WordPress.

Muchos plugins incluyen su propia página de opciones para independizarla de todo lo demás y que así, tengas en un mismo sitio todos los ajustes que puedas realizar con ese plugin.

En cuanto a la situación de las páginas de opciones, hay de todo pero la mayoría de los plugins tienen por costumbre situar sus páginas de opciones justo debajo de «Ajustes» en el menú de administración de WordPress, como podemos ver en la siguiente captura:

Páginas de opciones de WordPress con Advanced Custom Fields

Como podemos ver en la captura, hay tres plugins que tienen sus propias páginas de opciones. Ya veremos y hablaremos de sub-página pero de momento ahí queda eso.

Otra opción muy usada es crear una página de opciones dentro del menú ajustes.

Páginas de opciones de WordPress con Advanced Custom Fields

En este caso podemos ver que el plugin «Duplicate Post» crea su propia página de opciones dentro del menú «Ajustes«.

Estas dos son las opciones más elegidas por los plugins para crear sus páginas de opciones aunque también los hay que lo hacen «más arriba» en el menú del admin de WordPress.

Como es el caso de Mailpoet y un plugin de formularios de contacto como se puede ver en la siguiente captura:

Páginas de opciones de WordPress con Advanced Custom Fields

Ahora que ya hemos visto algunas de las ubicaciones donde generalmente se colocan las páginas de opciones, vamos a entrar en materia y vamos a crear una página de opciones con ACF.

Cómo crear una página de opciones

Para crear una página de opciones con Advanced Custom Fields, por supuesto, debemos tener instalado el plugin ACF y en su versión de pago (PRO). Necesitamos tener instala la versión Pro, ok?

Vamos a usar la función acf_add_options_page() qué como explica en la documentación oficial de ACF, nos permite crear de manera sencilla y rápida una página de opciones.

También comenta que las páginas de opciones se usan para guardar datos globales y por consiguiente, no están asociados a ningún post o página pero que, aún así, los datos se guardan en la tabla wp_options de la base de datos.

Para sentar las bases diré que la función acf_add_options_page() puede recibir com parámetro un array con los ajustes que hayamos establecido de esta forma:

acf_add_options_page( [$settings] );

La gracias de todo esto está en ese array [$settings]. Él es que nos permite decirle a la función las características que tendrá nuestra nueva página de opciones. Pero esto lo veremos un poco más adelante. Ahora vamos a crear nuestra primera página de opciones con ACF.

Crear una página de opciones super básica

Casi no merece la pena comentar esta opción pero la voy a comentar, mas que nada, por motivos didácticos para que veas lo más básico y te puedas hacer una idea desde dónde partimos y lo que vamos a ir añadiendo o modificando hasta conseguir lo que realmente queremos.

Para no hacer más larga la espera, a continuación pongo el código necesario para crear una página de opciones super básica.

Esta página de opciones no tiene nada de nada. No tiene ningún ajuste por ningún lado y por consiguiente se ajusta a los valores y por defecto establecidos por la función para estos casos.

Podemos ver en la siguiente captura de pantalla que ha creado una opción en el menú con el nombre «Options«. Sin más. Como no le hemos dicho nada de nada, muestra lo que tiene establecido por defecto. ¿Esperabas otra cosa?

Páginas de opciones de WordPress con Advanced Custom Fields

Además, cuando seleccionamos «Options» en el menú, se mostrará una página vacía con un mensaje tal como este:

Páginas de opciones de WordPress con Advanced Custom Fields

Suponiendo que no sepas a qué se debe este mensaje te puedo adelantar que es porque no hemos asignado ningún grupo de campos de ACF a esta página de opciones. Ya te he comentado que empezamos por lo básico.

Como se que nos va a venir bien para el resto del tutorial, voy a crear un grupo de campos con un par de campos para que podamos ver cómo va quedando nuestra página de opciones.

Crear un grupo de campos y asignarlo a la página de opciones

Para hacer esto, creamos un nuevo grupo de campos en ACF con el nombre que queramos y los campos que queramos. Para este ejemplo yo he creado lo siguiente:

Páginas de opciones de WordPress con Advanced Custom Fields

Podemos ver que se ha creado un grupo de campos con el nombre «Datos Generales» que tiene cuatro campos que vamos a utilizar para recoger y almacenar los datos de esta empresa en cuestión en la página de opciones. Y esto es lo importante ahora. He establecido la Ubicación del grupo de campos para que se muestre en la página de opciones «Options» que es la que tenemos ahora mismo, no tenemos más por el momento.

Por lo tanto, en nuestra página de opciones mostraría algo como lo suguiente:

Páginas de opciones de WordPress con Advanced Custom Fields

Como digo, es una página de opciones super básica pero es posible que para ciertas situaciones nos pueda servir. Casi mejor para entornos de test porque, como ya veremos, no cuesta mucho darle un toque para personalizarla y quedar mejor.

Resumiendo… Hemos creado una página de opciones, hemos creado un grupo de campos en ACF con 4 campos y hemos asignado este grupo de campos a nuestra página de opciones.

Seguimos…

Opciones básicas para las páginas de opciones de ACF

Ahora que ya sabemos cómo crear una página de opciones básica, sin pasarle el array de ajustes pero asignándole del grupo de campos, vamos a ir paso más allá y ver cómo podemos realizar algunos ajustes en nuestras páginas de opciones.

He comentado antes que para esto, debemos pasarle a la función acf_add_options_page() un array con los ajustes que necesitemos y para ello voy a poner un ejemplo y luego comentaré una a una las diferentes opciones de que disponemos.

Como vemos, establecemos los diferentes ajustes para la página de opciones el el array $options_page.

Paso ahora a comentas las diferentes opciones que hemos usado en el código anterior.

‘page_title’

Esta opción sirve para establecer el título de la página de opciones en sí. Aparecerá en la parte superior izquierda de la mima.

En este caso hemos establecido el valor de ‘page_title’ a ‘Datos Generales’. Por lo tanto vemos el título Datos Generales como en la captura siguiente:

Páginas de opciones de WordPress con Advanced Custom Fields

‘menu_title’

Esta opción nos permite establecer el nombre del item del menú dentro del menú de administración de WordPress.

En este caso se ha establecido ‘menu_title» igual que ‘page_title’ y se mostrará así en el menú de administración:

Páginas de opciones de WordPress con Advanced Custom Fields

‘menu_slug’

Esta opción creo que no tiene ningún truco, incluso menos que las dos anteriores pero bueno, venga, va, lo digo… Establecemos el slug o url relativa de esta página de opciones

En nuestro ejemplo nos debería de quedar algo así:

http://acf.local/wp-admin/admin.php?page=datos-generales

Cada cual con su url.

‘capability’

Este argumento también es interesante ya que podemos establecer el nivel de permisos que debe tener el usuario para poder ver la página de opciones.

En nuestro caso hemos establecido el valor de ‘capability’ a ‘edit_posts’.

Para más información y detalles acerca de los permisos y roles, mira esta página.

Vamos a por el siguiente…

‘position’

Este argumento se refiere a la posición del item de menú dentro del menú de administración de WordPress. Si no indicamos nada, generalmente se mostrará debajo de «Ajustes» como hemos visto hasta ahora.

Podemos darle un valor muy grande para que aparezca al final de todos como ‘999’:

Páginas de opciones de WordPress con Advanced Custom Fields

O darle otro valor para ubicarlo en cualquier otro lado como vemos aquí:

‘icon_url’

Opción interesante, claro que sí. Permite que indiquemos el icono del ítem de menú que por defecto está establecido al engranaje.

En el ejemplo he establecido a ‘dashicons-superhero-alt‘ por lo que se mostrará así:

Páginas de opciones de WordPress con Advanced Custom Fields

Tienes ver la lista completa de iconos disponibles, revisa los Dashicons.

‘update_button’

Él mimo lo dice todo. Se refiere al texto del botón de «Update» que aparece en la página de opciones y de debemos de pulsar cuando queramos guardar los cambios.

Páginas de opciones de WordPress con Advanced Custom Fields

‘updated_message’

En este caso se refiere al mensaje que se mostrará tras pulsar en el botón de actualizar (update).

Páginas de opciones de WordPress con Advanced Custom Fields

Para el caso he puesto ‘Las opciones se han guardado’.

‘redirect’

El tipo de dato de este atributo es booleano por lo que deberemos establecer a ‘true‘ o ‘false‘.

La opción por defecto es ‘true’ por lo que si no indicamos nada o establecemos ‘true‘, la página de opciones por defecto establecida para esta opción de menú, será la primera página de opciones hija.

Todavía no hemos visto esto de páginas de opciones hijas o sub-páginas de opciones pero lo veremos, claro que si.

En este caso lo he establecido a false para que sepamos que la página de opciones será la que estamos creando ya que no tiene páginas hijas.

Hay algún atributo más pero prefiero que los veamos dentro de un rato para no contarte algo que no te voy a mostrar de momento.

Crear página de opciones con página hija

Hace un momento he comentado el atributo ‘redirect‘. Pues bien, lo vamos a usar ahora mismo.

Aprovechando el código anterior, he añadido otra página de opciones pero en este caso, a parte de cambiar los datos necesarios, he añadido otra opción ‘parent_slug‘.

Antes de nada, pongo el código y te comento un poco el nuevo atributo.

‘parent_slug’

Esta opción o atributo nos sirve para establecer quién es la página «padre» de esta.

En el código anterior podemos ver que está establecido el slug de la página de opciones que ya habíamos creado y por eso también podemos ver que el atributo ‘redirect‘ de la primera página de opciones lo he establecido a ‘true‘, para que sea esta última la página de opciones que muestre el contenido y la otra sea una página padre que lo que hace es servir de contenedor a la página hija o páginas, si existiera alguna más.

Esto ya va cogiendo forma.

A continuación vamos a ver cómo podemos crear una página de opciones con varias sub-páginas

Crear páginas de opciones con sub-páginas

Como ya tenemos la idea en la cabeza con lo que acabamos de hacer con la página hija, ya tenemos el trabajo hecho.

Ahora lo que queremos es una página de opciones con varias páginas hijas. Para el ejemplo lo voy a hacer con 2 sub-páginas para no extenderme demasiado.

Por lo tanto, crearemos una página de opciones como la que habíamos creado antes «Datos Generales» y dos sub-páginas: «Datos empresa» y «Clientes«. Si, ya se que no es un buen ejemplo de uso pero no se me ha ocurrido nada interesante pero, quien sabe, tal vez se dé el caso…

En este caso no voy a guardar las funciones en variables sino que las voy a ejecutar directamente dentro la función. Por lo tanto quedaría así:

Páginas de opciones de WordPress con Advanced Custom Fields

Interesante, ¿verdad?

Tengo que comentar alguna cosa.

He creado otro grupo de campos de ACF «Clientes Empresa«, he creado un repeater con los campos «Nombre» y «CIF«. También he asignado este campo a la página de opciones «Clientes» que hemos creado.

Páginas de opciones de WordPress con Advanced Custom Fields

He cambiado el valora del atributo ‘parent-slug‘ y le he indicado el valor directamente, ya que no estoy guardando en variables. Este atributo lo establezco igual en ambas páginas puesto que lo que hace es indicar qué pagina es la página padre y ambas tienen el mismo padre. O eso dicen ellas…

Podríamos crear el número de sub-páginas que necesitemos, no hay problema con esto.

Establecer la página de opciones bajo Ajustes u otro ítem de menú

Hasta ahora hemos visto cómo crear páginas y sub-páginas de opciones. En todos los casos hemos estado siempre dentro de estas páginas que hemos creado pero si se da el caso de que queramos que nuestra página de opciones no tenga vida propia o más bien, que no tenga un ítem en el menú de administración de WordPress sino que queramos que descienda de alguno de los menús que ya existen, como por ejemplo el menú «Ajustes«, lo único que tendríamos que hacer sería establecer el slug de ese menú, el que nos indique cuando nos ponemos sobre el enlace, como contenido del atributo ‘parent_slug‘.

Para este ejemplo he cambiado el atributo ‘parent_slug’ en las dos sub-páginas de esta manera:

'parent_slug'   =>   'options-general.php'

Total, que nos quedaría algo como esto:

Páginas de opciones de WordPress con Advanced Custom Fields

Como se puede observar, dentro del menú «Ajustes«, tenemos tanto a la página de opciones «Datos empresa» como a la de «Clientes«.

Esto lo podemos hacer con otra opción de menú.

Cómo obtener los datos de campos de páginas de opciones

Como ya sabemos, el caso de las páginas de opciones es algo singular ya que no están asociadas a ningún post o página y van por su cuenta.

Aunque la forma de obtener o mostrar los datos de un campo de página de opciones sea utilizar igualmente las fuciones «get_field()» o «the_field()«, hay una particularidad puesto que, además de indicar el nombre del campo, debemos indicar también el parámetro ‘option’ en la función.

Por ejemplo:

<?php get_option( 'empresa', 'option' ); ?>

De esta manera obtenemos el valor del campo ‘empresa‘ que está asociado a una página de opciones.

Cómo crear una página de opciones con ACF Free o de andar por casa

Pues si, es posible, claro que si. Pero no te esperes algo guapísimo porque no.

Es muy sencillo y te lo voy a explicar poco a poco para que no queden dudas.

Si pensamos un poco, podemos crear un grupo de campos con una serie de campos para lo que sea, ok? En este caso lo que queremos son unos campos que solo se puedan modificar desde un sitio, desde una página, verdad? Así pasa con las páginas de opciones, que solo se puede modificar el valor de esos campos desde la página de opciones y por lo tanto solo hay un dato por campo como mucho, ¿si?

Pues bien, la idea que te propongo para esta página de opciones «casera» es crear una página con el nombre, digamos… «Ajustes Globales» u «Opciones«, como tu quieras. Luego creamos un grupo de campos con estos campo que queremos para los ajustes de nuestro sitio y se lo asignamos a esa página en concreto, a ninguna más. De esta forma, estos campos sólo se mostrarán en esa página. En ninguna otra página ni post.

Como puedes ver en la captura siguiente…

Páginas de opciones de WordPress con Advanced Custom Fields

He creado, como te he dicho, un grupo de campos «Ajustes generales» con 3 campos. Para que me sea más fácil identificar los nombre o identificadores de los campos, he añadido la palabra «opción_» delante. Buena idea, ¿verdad?

Ahora, en la sección de «Ubicación» lo ajustamos de tal forma que sólo se muestre en la página «Página de opciones (free)«. La primera condición sobraría porque la segunda es más específica pero más vale asegurarse…

Con esto y con la página «Página de opciones (free)» creada, ya podemos ir y aplicar los ajustes que necesitemos.

De momento bien. No tenemos ninguna pega, la verdad.

Ahora lo que debemos saber es cómo acceder a estos campos y que sólo se muestran en esta página.

Lo que haremos será especificar el ID de esta página en las funciones que usemos para recoger estos campos. Por ejemplo:

$nombre_empresa = get_field( 'option_field_name', 41 );

Tenemos que indicarle el ID en el segundo parámetro. En mi caso es «41«.

Y nada más, ya ves qué fácil es crear una página de opciones «casera«.

Si quieres trastear un poco para dejarla mejor, puedes desactivar gutenberg en esa página en concreto e incluso jugar con las opciones de ACF para quitar cosas. Esto ya te lo dejo a ti.

Hasta aquí hemos llegado y parece que fue ayer cuando empecé a escribir este tutorial.

Espero que sea de utilidad.

Mucho ánimo!

Newsletter Gucomers #46 – Cómo manejar el estrés como desarrollador WooCommerce

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Interesante semana con un montón de recursos sobre WooCommerce.

Tengo que decir que esto se está poniendo interesante en todos los sentidos. No solo en el avance de los desarrollos relacionados con WordPress y WooCommerce sino también por lo que a mi respecta ya que, con esto de tener que trastear más, me ha vuelto a dar vida. Es como un soplo de aire fresco que intensifica las ganas de seguir adelante en este camino haciendo lo que más me gusta que es «Programar».

Mención especial al artículo «Adding and Mofiying actions and filters«. Este artículo me parece realmente interesante sobre todo para aquellas personas que estéis interesados/as en el desarrollo WooCommerce.

Y también otra mención para el artículo «Scholar’s Tips: How to handle stress as a WooCommerce developer«. Echadle un vistazo y ya me contáis…

No puedo dejar de pasar la oportunidad para agradecer a todas las personas que hacen posible esta newsletter que son aquellas que están creando contenido interesante sobre WooCommerce. Muchas gracias.

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

¿Como poner WooCommerce en español?

Cómo escanear códigos de barras y QR de boletos en Eventos con WooCommerce

Plugins de autorespuesta para WooCommerce

Una introducción a los bloques de WooCommerce en WordPress

Plugins de Upsell (venta adicional) para WooCommerce

WooCommerce – Campos condicionales al finalizar compra

Cómo crear insignias de productos personalizados en WooCommerce

SEO para tiendas online WooCommerce – Guia#1

14 puntos a considerar al comprar un tema de WooCommerce

Cómo agregar la cuenta regresiva a productos WooCommerce

Autocompletar pedidos de WooCommerce

Diseño de página de tienda de WooCommerce con bloques de Gutenberg

Configuración de envío gratuito para pedidos con una cantidad mínima

Configuración de envío gratuito usando cupones en WooCommerce

Como migrar de Shopify a WooCommerce – Guia#2

Una introducción a WooCommerce Payments

Cómo mostrar categorías en la página de la tienda de WooCommerce

Ocultar el precio hasta que el usuario de registre o entre a su cuenta

WooCommerce en Inglés

15 Important Shopping Cart Abandonment Statistics for 2022: A Marketer’s Point of View

WordFest Live for WooCommerce Builders

WooCommerce 6.3 RC 2

Adding and Modifying Actions and Filters

WooCommerce Blocks 7.1.0 Release Notes

Work Life Balance and WordFest Live

WooCommerce: View Thank You Page @ Order Admin

WooCommerce: How To Set Up Buy One Get One Free (BOGO) Offers

Scholar’s Tips: How to Handle Stress as a WooCommerce Developer

A Great Conversation with Public Rec CEO Zach Goldstein on Reducing Cart Abandonment Rate

How to Add WooCommerce Product Countdown

Writer, Developer, WooCommerce Builder

How to Set Up and Customize your WooCommerce Product Page

WooBits: WooCommerce Updates and Twitter Chatter

How to Add Virtual Products to WooCommerce

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Eliminación masiva de comentarios o cómo borrar comentarios de WordPress «a granel»

El título del post viene por la traducción que hace Google Translate tanto de «bulk delete» como de «bulk». Me ha parecido gracioso y no he podido resistir la tentación. Pero venga, vamos a lo que vamos.

Estoy casi seguro de que en algún momento te ha pasado que te has encontrado alguna web de algún cliente (seguramente heredada) que, por motivos de spam, tiene una buena cantidad de comentarios pendientes de moderar. Pero segurísimo que estoy.

Podríamos ir página por página y mandarlos primero a la papelera y luego pues nada, otra vez para eliminarlos definitivamente. Pero estarás de acuerdo conmigo en que el tiempo es oro y hay que buscar otra solución.

Por suerte para ti y para mi, existe un plugin que nos va a ayudar en esta tarea. Se trata de WP Bulk Delete.

WP Bulk Delete - Eliminar comentarios de WordPress en masa

WP Bulk Delete nos permite, entre otras cosas, eliminar los comentarios en función del estado de los mismos.

En la captura puedes ver que hay un montón de comentarios pendientes e incluso uno en spam. Seleccionamos los estaos que queremos eliminar y listo! En un momento acabará esta pesadilla.

Ah! Siempre, antes de hacer este tipo de cosas te recomiendo hacer un backup completo de tu sitio. Sobre todo de la base de datos pero si es completo, mejor

WP Bulk Delete - Eliminar comentarios de WordPress en masa

Antes de marcharme comentar que este plugin te permite eliminar otro tipo de cosas como entradas, posts de otros cpts y demás. Es muy completo.

Nada más por mi parte.

Saludos y mucho ánimo!

Condicionales WordPress: Comprobar si es un fichero de plantilla

WordPress pone a nuestra disposición un buen número de funciones para realizar comprobaciones o chequeos de dónde estamos para que nosotros realicemos una acción u otra en función del resultado de esa función.

Pues bien, hoy vengo a hablarte de «is_page_template()«. Esta función, como ya habrás adivinado, nos permite comprobar si se trata de una template.

El modo sencillo sería este:

Ahora bien, si queremos comprobar una template en concreto lo que podemos hacer es esto:

Y así, sin más, muy sencillo pero muy útil. Pero échale un vistazo a la documentación de «is_page_template()» por si tienes alguna duda.

Ahora lo que hagas con este condicional es sólo cosa tuya, de tu imaginación y de tus necesidades.

Espero que te sea de utilidad.

Seguimos…

Advanced Custom Fields: Obtener todos los valores de un campo

Vamos a meternos con el desarrollo con Advanced Custom Fields que es una de las tecnologías o herramientas con las que trabajo todos los días y me parece muy interesante para cualquier persona que se mueva en el desarrollo de WordPress.

En este tutorial lo que vamos a hacer es una consulta a WordPress para que recoja todos los valores de un campo cd ACF y los guarde en un array para que posteriormente los podamos tratar o utilizar para cualquier otra tarea que necesitemos.

Para este ejemplo vamos a suponer que tenemos un grupo de campos «Empresa» que tendrá dos campos. Uno para el nombre de la empresa y otro para un Id de empresa. Para hacerlo sencillo vamos a suponer que estos dos campos son únicos y que no se van a repetir aunque no vamos a realizar este desarrollo en este tutorial. Lo haremos más adelante en otro, claro que si.

Ah! y para que nos sea más sencillo o diferente, he creado una CTP «Empresa» que es el tipo de contenido que tendrá estos campos.

Entonces, suponemos que tenemos esto en ACF:

Advanced Custom Fields - Obtener todos los valores de un campo

Teniendo esto como base para nuestro ejemplo de desarrollo, imaginemos que tenemos un buen número de empresas y que «odas» estas empresas tienen contenido único en estos dos campos.

Lo que queremos hacer es recorrer todos los posts de tipo empresa y guardar estos dos valores en un array para luego usarlo para otras cosas.

Para ello primero crearemos una función y dentro de esta usaremos la WP_Query para realizar la consulta.

Vamos allá y luego lo explico:

Hemos creado una función que podremos utilizar posteriormente en un hook o como necesitemos y dentro de esta función, lo principal es la query que hacemos a todos los posts del CPT empresa que estén publicados.

Recordemos que sólo queremos los ids y los nombre de las empresas, el resto de contenido nos da igual. Por lo menos por ahora.

Inicialmente creamos un array vacío fuera del if para almacenar los datos que necesitamos.

Una vez realizada la query, la recorremos y por cada post recogemos el id_empresa y el nombre_empresa para finalmente añadirlos al array $lista_ids_nombres_empresas.

Y ya lo tendríamos.

Lo último que hacemos es resetear la consulta y devolver el array con todo el contenido.

Podéis utilizar cualquier método para aseguraros de que efectivamente el contenido se guarda en el array y que es el contenido correcto. print_r o var_dump por ejemplo.

Como muestra, aquí tenemos una captura en la que confirmamos que efectivamente todo va como tiene que ir.

Advanced Custom Fields - Obtener todos los valores de un campo

Este es sólo el comienzo. La consulta es muy sencilla pero en otros tutoriales veremos cosas algo más complejas, ok?

Venga, mucho ánimo!

Newsletter Gucomers #45 – WooCommerce 6.2.1 security fix

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Interesante semana en la que hemos tenido una actualización de WooCommerce con dos problemillas. Uno relacionado con el la comprobación de permisos en la rest API y el anuncio de la primera versión candidata de WooCommerce 6.3 que está planificada para el día 8 de marzo.

Por otro lado, destacar el esfuerzo de WooFacil para publicar un buen número de artículos relacionados con WooCommerce.

Os animo que reviséis los diferentes tutoriales de WooFacil porque seguro que alguno de ellos seguro que os vienen muy bien.

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Mostrar las variaciones como colores o imágenes en WooCommerce

Algunas reglas importantes para el mantenimiento de WooCommerce

Crear reservas para restaurante con WooCommerce

Como ajustar precios a un atributo por lote en WooCommerce

4 componentes esenciales de una tienda online WooCommerce de alta conversión

Cómo ocultar precios en WooCommerce

Cómo habilitar el modo de catálogo de WooCommerce

Color para atributos de productos variables de WooCommerce

Cómo personalizar los correos electrónicos de WooCommerce

Cómo ocultar widgets en WooCommerce

WooCommerce 6.3 para introducir el filtrado de nuevos productos por atributos

Como agregar nuevos clientes de WooCommerce a MailChimp

Como personalizar la pagina de la tienda de WooCommerce

Cómo separar los productos de la tienda por categorías en WooCommerce

WooCommerce en Inglés

How to Delete WooCommerce Orders?

WooCommerce Shipment Tracking: why tracking packages is a must-have for your shop

WooCommerce: How to Sell Craft Beer Online

Web 3.0 Perspective, Pricing & the WooCommerce Ecosystem

How to Customize WooCommerce Shop Page

WooCommerce: How To Migrate From Shopify

WooCommerce 6.2.1 Security Fix

WooCommerce 6.3 RC

WooCommerce: Truncate Tag List @ Single Product Page

Start Your WooCommerce Builder Story

How To Add a WooCommerce Subscription Product

How to Customize the WooCommerce Shop Page

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Añadir css en el backend de WordPress

Pues si, hoy me ha hecho falta volver a hacer esto y ya sabes, no te acuerdas de cómo lo hiciste la última vez y toca buscar un poco.

La idea es que queremos aplicar ciertas reglas css dentro de la administración de WordPress. En mi caso lo quiero aplicar para unas cosillas de Advanced Custom Fields. Que no viene al caso pero ahí queda.

Como siempre, lo ideal es tener todo bien organizado y en mi caso, en este caso, he creado un fichero «admin.css» dentro del directorio «assets/css/» del tema activo. Por lo que quedaría «/assets/css/admin.css«. Y en este fichero puedes añadir todo el css que queráis aplicar en tu backend de WordPress.

Ahora bien, para que este css afecte al backend de WordPress, tendremos que usar el hook «admin_enqueue_scripts» de la misma forma que lo hacemos cuando encolamos para el front con «wp_enqueue_scripts» o styles.

El código que hay que incluir en el fichero functions.php de vuestro tema o en otro fichero si es que lo tienes organizado así es el siguiente:

Ya ves que es muy sencillo y fácil de implementear.

Pruébalo y me cuentas.

Saludos y mucho ánimo!

Newsletter Gucomers #44 – WooCommerce Blocks 7.0

Muy buenos días a todos y a todas.

Ya está aquí una nueva edición de la newsletter Gucomers. La newsletter semanal en la que se recogen recursos relacionados con WooCommerce.

Esta semana, a parte de la versión beta 1 de WooCommerce 6.3 y de la versión 7.0.0 de WooCommerce Blocks, cabe destacar la cantidad de posts que ha publicado nuestro buen amigo njengah en los que nos desgrana algunos snippets bastante interesantes. La verdad es que no es nada nuevo pero seguro que a más de uno/a os vendrá bien para realizar diversos cambios en WooCommerce con código.

Una semana tranquila pero sin pausa, claro que si.

No dejéis de enviarme un email a oscarabadfolgueira@gmail.com y me contáis cosas.

Venga, mucho ánimo y ¡adelante!

Por lo demás, nada que resalta pero como siempre, a continuación te dejo los enlaces:

WooCommerce en Español

Exportar e importar pedidos y usuarios en WooCommerce

Cómo sincronizar el nombre y apellidos de usuario de WooCommerce con el de WordPress

¿Cuántos productos soporta WooCommerce?

WooCommerce en Inglés

WooBits: Shopify, Ownership and WooCommerce?

Help us make the WooCommerce Platform Better

Behind the Scenes: WooCommerce Branding and Design

Best WooCommerce Product List View Plugins for 2022

Hook Example : How to Use woocommerce_remove_cart_item Hook

How to Get WooCommerce States List

How to Make Phone Number Required WooCommerce

How to Change SKU Text WooCommerce

How to Remove Archive Title WooCommerce

How to Display Username In WooCommerce

How to Disable Click on Product Image WooCommerce

How to Create tax_query WooCommerce Example

How to Add Buy Now Button WooCommerce Without Plugin

How to Fix WooCommerce Add to Cart not Working After Update

WooCommerce Blocks 7.0.0 Release Notes

Why You Should Launch a Multilingual WooCommerce Store in 2022

WooCommerce: Split Shop Page By Category

WooCommerce 6.3 Beta 1

The Impact of WooCommerce for Builders

How to Hide Widgets in WooCommerce

Como siempre, si notas que me he dejado algo, me lo comentas para incluirlo en próximas ediciones de la newsletter

Venga, buena semana!

Ir al contenido