Ha salido la nueva versión de PHP, la 5.2.5, estando centrada esta versión en mejorar la estabilidad con cerca de 60 errores solucionados, algunos de ellos relativos a la seguridad, por lo que es necesario actualizar nuestras versiones de PHP. PHP 5.2.5
Ahora viene la parte más complicada, y digo complicada porque sinceramente he tenido que mirar el código porque algo me fallaba cuando seguía lo que decía la documentación.
El nombre del fichero JSON tiene el siguiente formato [dominio de traducción]-[idioma]-[handler del fichero].json, total nada.
Dominio será el que usemos para traducir, en el ejemplo sería mi-plugin:
__( 'Hola que tal', 'mi-plugin' );
Idioma es el código del idioma, en este caso es_ES
Y por último el handler del fichero es el primer parámetro que usamos en wp_enqueue_script
Lo podemos ver todo en un ejemplo final:
wp_enqueue_script(
'mi-plugin-handler', // El handler mencionado anteriormente
$blocks_script, // Nuestro path
[
'wp-i18n', // De referenciar al menos a wp-i18n
],
);
wp_set_script_translations( 'mi-plugin-handler, 'mi-plugin', plugin_dir_path( __FILE__ ) . 'languages' );
Un gran tutorial que explica cómo crear documentos PDF con Haru, una librería realizada en C que nos permite generar PDFs con texto, líneas e imagenes, añadir enlaces y anotaciones, comprimir documentos, usar TTFs, PDFs encriptados, y muchas cosas más.
El tutorial empieza mostrándonos cómo instalar Haru en nuestro PHP, y luego sigue con una serie de ejemplo sencillos hasta decirnos como añadir shapes o proteger el documento. Dynamically Generating PDF Files with PHP and Haru
Las tiendas online son uno de los productos más usados en desarrollo web, pero suele ser lo que más dolores de cabeza da debido al pago por tarjeta de crédito. Afortunadamente, Paypal ofrece la posibilidad de pagar mediante tarjeta de crédito. Para ello, Paypal dispone de una API NVP muy cómoda de usar.
Para los usuarios de Codeigniter existe una librería que nos facilita toda la tarea. En el controlador primero debemos indicar el SetExpressCheckout que prepara la transacción. Cuando aceptemos el OK de la llamada se redireccionará a Paypal para que el usuario pueda realizar la compra, que devolverá la llamada a una URL nuestra y en ese caso, cogiendo los datos devueltos por Paypal podremos confirmar la transacción:
define('PAYPAL_URL', 'https://www.sandbox.paypal.com/webscr&cmd=_express-checkout&token=');
class Demo extends Controller {
function Demo()
{
parent::Controller();
}
function index() {
$this->paypal_api_lib->add_nvp('RETURNURL', 'http://servidor/demo/ok');
$this->paypal_api_lib->add_nvp('CANCELURL', 'http://servidor/demo/cancel');
$this->paypal_api_lib->add_nvp('NOSHIPPING', '0');
$this->paypal_api_lib->add_nvp('ALLOWNOTE', '1');
$this->paypal_api_lib->add_nvp('SOLUTIONTYPE', 'Sole'); // esto es lo que no obliga a que se tenga que tener cuenta Paypal
$this->paypal_api_lib->add_nvp('LANDINGPAGE', 'Billing');
$this->paypal_api_lib->add_nvp('AMT', '69.00');
$this->paypal_api_lib->add_nvp('NOSHIPPING', '2');
$this->paypal_api_lib->add_nvp('HDRIMG', 'http://servidor/logo.gif');
$this->paypal_api_lib->add_nvp('CURRENCYCODE', 'EUR');
$this->paypal_api_lib->add_nvp('L_NAME0', 'Librito');
$this->paypal_api_lib->add_nvp('L_AMT0', '59.00');
$this->load->library('session');
$sesion = array('paypalAmount'=>'69.00');
$this->session->set_userdata($sesion);
if($this->paypal_api_lib->send_api_call('SetExpressCheckout')){
if (strtoupper($this->paypal_api_lib->nvp_data["ACK"]) =="SUCCESS") {
$token = urldecode($this->paypal_api_lib->nvp_data["TOKEN"]);
$payPalURL = PAYPAL_URL.$token;
header("Location: ".$payPalURL);
exit();
}
}
paypal_errors();
}
function ok() {
$this->load->library('session');
$this->paypal_api_lib->add_nvp('TOKEN', $_REQUEST['token']);
$this->paypal_api_lib->add_nvp('PAYERID', $_REQUEST['PayerID']);
$this->paypal_api_lib->add_nvp('PAYMENTACTION', 'Sale');
$this->paypal_api_lib->add_nvp('AMT', $this->session->userdata('paypalAmount'));
$this->paypal_api_lib->add_nvp('CURRENCYCODE', 'EUR');
$this->paypal_api_lib->add_nvp('IPADDRESS', $_SERVER['SERVER_NAME']);
if($this->paypal_api_lib->send_api_call('DoExpressCheckoutPayment')) {
var_dump($this->paypal_api_lib->nvp_data);
} else {
paypal_errors();
}
}
}
Rapid es un conjunto de librerÃas para el framework CodeIgniter que nos ayuda a desarrollar nuestras aplicaciones de forma rápida.
Es necesaria la version 1.5.4 de CodeIgniter para poder utilizarla, y gracias a esta librerÃa podremos un GUI para datos de forma rápida, tener un modo estándar de desarrollar tus backends, no tener que usar librerÃas que necesiten configuración, realizar aplicaciones sin PEAR, uso de temas y mucho más.
Si ya CodeIgniter es uno de los mejores frameworks para PHP que existen, Rapid puede ser una ayuda más para desarrollos rápidos. Rapid
Gracias David
Cuando creamos un custom post type e incluimos sus propias taxonomias, solemos necesitar añadir en el menú enlaces a diferentes taxonomías. Hay plugins que te añaden esa opción, pero realmente es tan sencillo como añadir este código a tu functions.php.
Bitly-PHP es una librería PHP que permite trabajar con la API de Bit.ly, pudiendo acortar URLs, extenderlas, obtener información como el thumbnail o las estadísticas.
$bitly = new Bitly(",");
$bitly->stats('http://bit.ly/b6R4Uf');
echo $bitly->getData()->clicks;