Enviar dinámicamente PDF adjunto a una publicación con Contact Form 7
Estoy intentando enviar un PDF dinámico que está adjunto a una publicación mediante el plugin Contact Form 7.
Supongo que necesito usar el hook:
add_action('wpcf7_before_send_mail','send_pdf');
Ya que es el hook que he visto usado más comúnmente al buscar una solución.
Esto es lo que tengo, he estado probando primero con un PDF de prueba con una URL absoluta:
function send_pdf( $cf7 ) {
if ($cf7->id==741){
$cf7->uploaded_files = array ( 'pdf' => get_template_directory().'/test.pdf' );
}
}
Si entiendo correctamente, si el ID del formulario de contacto es correcto y tengo [pdf]
en el campo "adjunto de archivo" de mail2, entonces ese PDF debería enviarse por correo a la persona que ha enviado sus datos.
Sin embargo, en mi caso esto no funciona, recibo el correo pero sin ningún adjunto.
¿Hay algo que me esté perdiendo o quizás conocen otro método que funcione?

Prueba esto en su lugar. Hubo una reestructuración interna en CF7 3.9.
add_action('wpcf7_before_send_mail','send_pdf');
function send_pdf( $cf7 ) {
$id = $cf7->id();
if ($id==741){
$submission = WPCF7_Submission::get_instance();
$submission->add_uploaded_file('pdf', get_template_directory().'/test.pdf');
}
}
Esto debería funcionar.

Eres una persona maravillosa, funciona genial. Ah, quizás quieras agregar una barra antes de test.pdf, fue un error tipográfico de mi parte. Podría confundir a las personas que lo usen :)

No supongo que sepas por qué esa URL test.pdf funcionó pero una URL como /wp-content/uploads/2015/01/test.pdf no lo hace. ¿Tiene algo que ver con los permisos del plugin?

Creo que necesitas una ruta absoluta. Podrías probar con get_home_path(); No puedo probarlo ahora mismo, pero avísame si funciona.

Consulta también https://wordpress.org/support/topic/sending-an-attachment-using-contact-form-7 me ayudó mucho

No funciona para mí. Envía el correo sin problemas, pero no adjunta nada.

Como esta parece ser una respuesta aceptada, ¿por qué estoy recibiendo el error: Uncaught Error: Call to private method WPCF7_Submission::add_uploaded_file()
?

Chris Pink, esto cambió con la última actualización de CF7 - Estoy intentando encontrar un nuevo método ahora mismo. :-(

@ChrisPink Tienes que combinar esta funcionalidad con esto: https://stackoverflow.com/a/48189650/2757809
