<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>colaboradores &#8211; danisanchez.net</title>
	<atom:link href="https://danisanchez.net/tag/colaboradores/feed/" rel="self" type="application/rss+xml" />
	<link>https://danisanchez.net</link>
	<description></description>
	<lastBuildDate>Tue, 16 Jan 2018 16:56:24 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://danisanchez.net/wp-content/uploads/2026/07/cropped-favicon-32x32.png</url>
	<title>colaboradores &#8211; danisanchez.net</title>
	<link>https://danisanchez.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Modificar la Biblioteca de Medios para que los usuarios solo vean sus propios archivos (WordPress)</title>
		<link>https://danisanchez.net/modificar-la-libreria-medios-los-usuarios-solo-vean-propios-archivos-wordpress/</link>
					<comments>https://danisanchez.net/modificar-la-libreria-medios-los-usuarios-solo-vean-propios-archivos-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Tue, 16 Jan 2018 16:56:24 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[colaboradores]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[publicaciones]]></category>
		<category><![CDATA[tutoriales]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=3598</guid>

					<description><![CDATA[En el último post vimos cómo dar permisos a nuestros usuarios colaboradores para cargar archivos a la Biblioteca de Medios y poder usarlos en sus entradas. Llegados a este punto, puede que nos interese hacer que nuestros colaboradores sólo puedan ver sus propios archivos y los de nadie más. Esto como siempre podemos implementarlo mediante [&#8230;]]]></description>
										<content:encoded><![CDATA[


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Cómo limitar la Librería de Medios para que los usuarios solo vean sus archivos (WordPress)" width="500" height="281" src="https://www.youtube.com/embed/JpdFPVfDO8E?start=2&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">En el último post vimos <a rel="noreferrer noopener" href="https://danisanchez.net/permitir-usuario-colaborador-subir-archivos-desde-frontend-wordpress/" target="_blank">cómo dar permisos a nuestros usuarios colaboradores para cargar archivos</a> a la Biblioteca de Medios y poder usarlos en sus entradas. Llegados a este punto, puede que nos interese hacer que nuestros colaboradores sólo puedan ver sus propios archivos y los de nadie más.</p>



<p class="wp-block-paragraph">Esto como siempre podemos implementarlo mediante código en el archivo <em>functions.php</em> o también mediante un sencillo <em>plugin</em>. Vamos a ver ambos métodos, pues cada uno tiene sus ventajas e inconvenientes.</p>



<p class="wp-block-paragraph">Por un lado, usar código nos obliga a estar al tanto del <em><a rel="noreferrer noopener" aria-label="Códex de WordPress (opens in a new tab)" href="https://codex.wordpress.org/" target="_blank">Códex de WordPress</a></em> por si en una futura actualización&nbsp;se modifica alguna función, hook o metodología, que haga errar nuestro código. En cambio ganaremos en optimización, pues los plugins que instalamos siempre incluyen archivos, funciones y código que no necesitamos.</p>



<p class="codigo-resaltado wp-block-paragraph">El código:</p>



<pre class="wp-block-code"><code>&lt;?php
//Limitar el acceso a la librería solo a tus propios archivos
 function mostrar_solamente_archivos_del_usuario($query){
    $user_id = get_current_user_id();

    if($user_id &amp;&amp; !current_user_can('activate_plugins') &amp;&amp; !current_user_can('edit_others_posts')){
        $query&#91;'author'] = $user_id;
    }
    return $query;
} 
add_filter('ajax_query_attachments_args', 'mostrar_solamente_archivos_del_usuario');
?&gt;</code></pre>



<p class="wp-block-paragraph">Si optamos por usar el plugin, conviene asegurarnos de que su autor lo actualiza con frecuencia para mantener la compatibilidad con las nuevas versiones de WordPress.</p>



<p class="wp-block-paragraph">En este caso vamos a usar <a href="https://wordpress.org/plugins/wp-users-media/" target="_blank" rel="noreferrer noopener">WP Users Media</a>, que en el momento de escribir este artículo, hace unas 3 semanas que se actualizó, lo cual indica que su autor lo está manteniendo.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="585" height="248" src="https://danisanchez.net/wp-content/uploads/2018/01/006-1-1.jpg" alt="" class="wp-image-3599" srcset="https://danisanchez.net/wp-content/uploads/2018/01/006-1-1.jpg 585w, https://danisanchez.net/wp-content/uploads/2018/01/006-1-1-300x127.jpg 300w" sizes="(max-width: 585px) 100vw, 585px" /></figure></div>



<p class="wp-block-paragraph">Su configuración es muy simple, y una vez instalado y activado nos dirigimos al menú Ajustes &#8211; WP Users Media y solo tenemos que marcar los roles a los que aplicar la restricción de ver únicamente sus archivos en la biblioteca de medios:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="779" height="550" src="https://danisanchez.net/wp-content/uploads/2018/01/007.jpg" alt="" class="wp-image-3600" srcset="https://danisanchez.net/wp-content/uploads/2018/01/007.jpg 779w, https://danisanchez.net/wp-content/uploads/2018/01/007-300x212.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/007-768x542.jpg 768w" sizes="(max-width: 779px) 100vw, 779px" /></figure></div>



<p class="wp-block-paragraph">Si también queremos ampliar esta limitación al administrador (por si existen varios administradores en el sitio web), podemos marcar la opción:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="580" height="149" src="https://danisanchez.net/wp-content/uploads/2018/01/008.jpg" alt="" class="wp-image-3601" srcset="https://danisanchez.net/wp-content/uploads/2018/01/008.jpg 580w, https://danisanchez.net/wp-content/uploads/2018/01/008-300x77.jpg 300w" sizes="auto, (max-width: 580px) 100vw, 580px" /></figure></div>



<p class="wp-block-paragraph">Y eso es todo de momento. Espero que esta nueva serie de Posts ayuden a aquellos que como yo, necesitaban habilitar zonas especiales para que otros usuarios puedan añadir contenido al sitio web.</p>



<p class="wp-block-paragraph">Un saludo y hasta el próximo post!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/modificar-la-libreria-medios-los-usuarios-solo-vean-propios-archivos-wordpress/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Permitir a un usuario colaborador subir archivos desde el Frontend (WordPress)</title>
		<link>https://danisanchez.net/permitir-usuario-colaborador-subir-archivos-desde-frontend-wordpress/</link>
					<comments>https://danisanchez.net/permitir-usuario-colaborador-subir-archivos-desde-frontend-wordpress/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Tue, 16 Jan 2018 08:15:14 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[colaboradores]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[páginas web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[publicaciones]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=3590</guid>

					<description><![CDATA[Si hemos creado un formulario externo para que usuarios colaboradores puedan enviar contenidos al sitio web sin necesidad de acceder al Dashboard, veremos que al cargar el editor de WordPress (wp_editor), no aparece el botón de Añadir Objeto para acceder a la Biblioteca de Medios: Sería muy interesante (y nos ahorraría mucho trabajo), que nuestros [&#8230;]]]></description>
										<content:encoded><![CDATA[


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Permitir a un usuario colaborador subir archivos desde el Frontend (WordPress)" width="500" height="281" src="https://www.youtube.com/embed/0rH2ES5E4OQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Si hemos <a href="https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/" target="_blank" rel="noreferrer noopener">creado un formulario externo</a> para que usuarios colaboradores puedan enviar contenidos al sitio web sin necesidad de acceder al Dashboard, veremos que al cargar el editor de WordPress (wp_editor), no aparece el botón de <strong>Añadir Objeto</strong> para acceder a la Biblioteca de Medios:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1000" height="680" src="https://danisanchez.net/wp-content/uploads/2018/01/004-1-1.jpg" alt="" class="wp-image-3591" srcset="https://danisanchez.net/wp-content/uploads/2018/01/004-1-1.jpg 1000w, https://danisanchez.net/wp-content/uploads/2018/01/004-1-1-300x204.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/004-1-1-768x522.jpg 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">Sería muy interesante (y nos ahorraría mucho trabajo), que nuestros usuarios colaboradores pudieran subir imágenes y contenidos para ilustrar sus contenidos, evitando tener que hacerlo nosotros a la hora de revisar la entrada.</p>



<p class="wp-block-paragraph">Para ello tendremos que darle al usuario colaborador (contributor) permisos o capacidad para añadir archivos a WordPress. Por internet he encontrado en numerosos posts el siguiente código:</p>



<pre class="wp-block-code"><code><pre class="wp-block-syntaxhighlighter-code">if ( current_user_can('contributor') &amp;&amp; !current_user_can('upload_files') )
    add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
    $contributor = get_role('contributor');
    $contributor-&gt;add_cap('upload_files');
}</pre></code></pre>



<p class="wp-block-paragraph"><strong>Pero este código NO FUNCIONA en versiones recientes de WordPress.&nbsp;</strong>Aparecerá el botón de Añadir Objeto, pero en el momento que intentes cargar un archivo, te dirá que no tienes permisos para añadir archivos a esta entrada.</p>



<p class="wp-block-paragraph">Y tiene que ver con la forma en la que ahora WordPress trata a los archivos de medios, dándoles las características cómo de un custom post o estilo de entrada. Para que funcione tienes que dotar al usuario colaborador de otros permisos adicionales como, editar páginas publicadas, editar otras páginas, editar entradas publicadas y editar otras entradas, además por supuesto, de subir archivos:</p>



<pre class="wp-block-code"><code><pre class="wp-block-syntaxhighlighter-code">//Permitir al colaborador subir imágenes
    function update_caps() {
 $role = get_role( 'contributor' );
 $caps_to_add = array(
 'edit_others_posts',
 'edit_published_posts',
 'edit_others_pages',
 'edit_published_pages',
 'upload_files'
 );
 foreach( $caps_to_add as $cap )
 $role-&gt;add_cap( $cap );
 }
  add_action('init', 'update_caps');</pre></code></pre>



<p class="wp-block-paragraph">Con este código si he conseguido que un usuario colaborador pueda cargar imágenes desde un formulario externo en el Frontend de WordPress.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>ACTUALIZACIÓN DESDE WORDPRESS 5.0</strong></p></blockquote>



<p class="wp-block-paragraph"><strong>En versiones recientes de WordPress (desde la 5), no he necesitado añadir permisos de <em>edit_others_posts, edit_others_pages, edit_published_posts y edit_published_pages</em>. Simplemente agregando la capacidad «upload_files», ha funcionado.</strong></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1000" height="680" src="https://danisanchez.net/wp-content/uploads/2018/01/005-1-1.jpg" alt="" class="wp-image-3592" srcset="https://danisanchez.net/wp-content/uploads/2018/01/005-1-1.jpg 1000w, https://danisanchez.net/wp-content/uploads/2018/01/005-1-1-300x204.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/005-1-1-768x522.jpg 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<p class="wp-block-paragraph">En el siguiente post veremos cómo hacer que un usuario colaborador <strong>solo pueda ver sus archivos</strong> en la Biblioteca de Medios.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/permitir-usuario-colaborador-subir-archivos-desde-frontend-wordpress/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Permitir el acceso a una página según el rol del usuario (WordPress)</title>
		<link>https://danisanchez.net/permitir-acceso-una-pagina-segun-rol-del-usuario-wordpress/</link>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Tue, 16 Jan 2018 07:45:11 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[colaboradores]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[páginas web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[publicaciones]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=3586</guid>

					<description><![CDATA[En anteriores posts veíamos cómo crear un formulario externo para usuarios colaboradores sin tener que acceder al Dashboard o panel de control de WordPress. Ya que vamos a tener una página o sección exclusiva para colaboradores, lo lógico sería que sólo este tipo de rol tuviera acceso a esta página. Usaremos este pequeño script situado [&#8230;]]]></description>
										<content:encoded><![CDATA[


<p class="wp-block-paragraph">En anteriores posts veíamos cómo crear un <a href="https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/" target="_blank" rel="noreferrer noopener">formulario externo para usuarios colaboradores</a> sin tener que acceder al Dashboard o panel de control de WordPress.</p>



<p class="wp-block-paragraph">Ya que vamos a tener una página o sección exclusiva para colaboradores, lo lógico sería que sólo este tipo de rol tuviera acceso a esta página.</p>



<p class="wp-block-paragraph">Usaremos este pequeño script situado al principio de nuestra página o<em> template </em>(<a href="https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/" target="_blank" rel="noreferrer noopener">ver post cómo crear un formulario externo para colaboradores</a>) page-colaboradores.php:</p>



<pre class="wp-block-code"><code><pre class="wp-block-syntaxhighlighter-code">&lt;?php 
 $user = wp_get_current_user();
 
 if(!empty($user) &amp;&amp; !in_array("contributor", (array) $user-&gt;roles)){ ?&gt;
 &lt;script&gt;
 alert('Esta zona es solo para colaboradores. Por favor, inicia sesión para acceder.');
 location.href='http://www.mi-sitio.com/';
 &lt;/script&gt;"
&lt;?php } ?&gt;</pre></code></pre>



<p class="wp-block-paragraph">Lo primero que hacemos es recoger (wp_get_current_user) las propiedades o características del usuario en cuestión y comprobamos si este tiene asignado el rol de colaborador (contributor).</p>



<p class="wp-block-paragraph">De no ser así, redirigiremos mediante un simple script a la página principal del sitio web.</p>



<p class="wp-block-paragraph">Este script serviría igualmente para comprobar cualquier otro rol, administrador (admin), autor (author), editor (editor), suscriptor (suscriber)&#8230;solo tenemos que cambiarlo en el <em>if</em>.</p>



<p class="wp-block-paragraph">Si tenemos varias páginas exclusivas para un rol determinado, podríamos pegar este script en un archivo aparte (redigirir.php), y llamarlo al principio de cada una de las páginas o templates que solo sean accesibles a ese rol determinado:</p>



<pre class="wp-block-code"><code><pre class="wp-block-syntaxhighlighter-code">&lt;?php include('redirigir.php'); ?&gt;</pre></code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Impedir el acceso al Dashboard (wp-admin) a usuarios no administradores</title>
		<link>https://danisanchez.net/impedir-acceso-al-dashboard-wp-admin-usuarios-no-administradores/</link>
					<comments>https://danisanchez.net/impedir-acceso-al-dashboard-wp-admin-usuarios-no-administradores/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Tue, 16 Jan 2018 07:29:55 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[colaboradores]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[publicaciones]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[woocommerce]]></category>
		<category><![CDATA[wp-admin]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=3579</guid>

					<description><![CDATA[Si deseamos tener una zona personalizada para usuarios colaboradores de nuestro sitio web, seguramente no queramos que tengan acceso al panel de control o Dashboard de WordPress aunque este esté limitado por el rol establecido (suscriptor, colaborador, autor&#8230;). Queremos tener un sitio web homogéneo y que nuestros usuarios no abandonen el Frontend para añadir sus [&#8230;]]]></description>
										<content:encoded><![CDATA[


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Impedir el acceso al Dashboard (o admin) de WordPress a usuarios No Administradores" width="500" height="281" src="https://www.youtube.com/embed/Br0MmWLJb1E?start=8&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Si deseamos tener una zona personalizada para usuarios colaboradores de nuestro sitio web, seguramente no queramos que tengan acceso al panel de control o Dashboard de WordPress aunque este esté limitado por el rol establecido (suscriptor, colaborador, autor&#8230;).</p>



<p class="wp-block-paragraph">Queremos tener un sitio web homogéneo y que nuestros usuarios no abandonen el Frontend para añadir sus contenidos.</p>



<p class="wp-block-paragraph">Ya vimos en el anterior post, <a href="https://danisanchez.net/ocultar-la-barra-admin-usuarios-no-sean-administradores/" target="_blank" rel="noreferrer noopener">cómo ocultar la barra de admin a usuarios no administradores</a>, pero todavía seguirían teniendo acceso si teclean directamente la URL del Dashboard (http://www.tudominio/<strong>wp-admin</strong>).</p>



<p class="wp-block-paragraph">Añadiendo este código al archivo <strong>functions.php</strong> de nuestro theme principal, impediremos que, aún tecleando la URL, se pueda acceder al Dashboard de WordPress si no eres usuario Administrador:</p>



<pre class="wp-block-code"><code>//Restringir panel admin solo a administradores
function restrict_admin_area_by_rol(){
  if (!current_user_can('manage_options') &amp;&amp; (!defined('DOING_AJAX') || ! DOING_AJAX )){
    wp_redirect(site_url());
    exit;
  }
}
add_action('admin_init', 'restrict_admin_area_by_rol', 1);</code></pre>



<p class="wp-block-paragraph">Como vemos en el código, definimos que si el usuario en curso (current user) no posee opciones administrativas (! es igual a NOT, o negación), será redirigido a la página principal del sitio web.</p>



<p class="wp-block-paragraph">Debemos tener en cuenta que esta función impide que el usuario conecte con cualquier archivo dentro del directorio wp-admin, pero a veces es necesario acceder a estos archivos desde el front-end, por ejemplo, para peticiones AJAX, ya que el archivo que carga las funciones AJAX en WordPress (admin-ajax.php) se encuentra precisamente dentro de /wp-admin. Para ello añadimos la siguiente condición &amp;&amp; (!defined(&#8216;DOING_AJAX&#8217;) || ! DOING_AJAX )), para excluirla de la redirección.</p>



<p class="wp-block-paragraph">En el siguiente Post veremos <a href="https://danisanchez.net/permitir-acceso-una-pagina-segun-rol-del-usuario-wordpress/" target="_blank" rel="noreferrer noopener">cómo permitir el acceso a una página según el rol del usuario</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/impedir-acceso-al-dashboard-wp-admin-usuarios-no-administradores/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Ocultar la barra de admin a usuarios que no sean administradores</title>
		<link>https://danisanchez.net/ocultar-la-barra-admin-usuarios-no-sean-administradores/</link>
					<comments>https://danisanchez.net/ocultar-la-barra-admin-usuarios-no-sean-administradores/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Tue, 16 Jan 2018 07:08:51 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[colaboradores]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[publicaciones]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-admin]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=3573</guid>

					<description><![CDATA[Continuando con el anterior post «Crear entradas desde un formulario externo en WordPress«, vamos a mejorar nuestro formulario para colaboradores ocultando la barra de administración de WordPress a todo usuario que no sea administrador del sitio: Para ello solo tenemos que incluir este código en el archivo functions.php de nuestro theme principal. Podemos incluirlo al [&#8230;]]]></description>
										<content:encoded><![CDATA[


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Ocultar la barra de admin de WordPress para usuarios colaboradores" width="500" height="281" src="https://www.youtube.com/embed/WOKYL2-kh5s?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Continuando con el anterior post «<a href="https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/" target="_blank" rel="noreferrer noopener">Crear entradas desde un formulario externo en WordPress</a>«, vamos a mejorar nuestro formulario para colaboradores ocultando la barra de administración de WordPress a todo usuario que no sea administrador del sitio:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1369" height="266" src="https://danisanchez.net/wp-content/uploads/2018/01/001-1-1.jpg" alt="barra de admin o dashboard de wordpress" class="wp-image-3574" srcset="https://danisanchez.net/wp-content/uploads/2018/01/001-1-1.jpg 1369w, https://danisanchez.net/wp-content/uploads/2018/01/001-1-1-300x58.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/001-1-1-1024x199.jpg 1024w, https://danisanchez.net/wp-content/uploads/2018/01/001-1-1-768x149.jpg 768w" sizes="auto, (max-width: 1369px) 100vw, 1369px" /></figure>



<p class="wp-block-paragraph">Para ello solo tenemos que incluir este código en el archivo <strong>functions.php</strong> de nuestro theme principal. Podemos incluirlo al final del todo si queremos, para tenerlo mejor localizado:</p>



<pre class="wp-block-code"><code>// Ocultar barra de admin a usuarios no administradores
function ocultar_admin_bar(){
   if(current_user_can('administrator')){
      show_admin_bar(true);
   }else{
       show_admin_bar(false);
   }
}
add_action('after_setup_theme','ocultar_admin_bar');</code></pre>



<p class="wp-block-paragraph">No tiene sentido que si estamos creando una zona personalizada para nuestros colaboradores evitando que toquen nada en el Dashboard, puedan tener acceso a él. Con este código conseguimos que no tengan un acceso directo al Dashboard, pero todavía podrían entrar si teclean la URL «/wp-admin».</p>



<p class="wp-block-paragraph">En el siguiente post, veremos cómo <a href="https://danisanchez.net/impedir-acceso-al-dashboard-wp-admin-usuarios-no-administradores/" target="_blank" rel="noreferrer noopener">impedir el acceso al Dashboard a usuarios que no sean administradores</a>, redirigiéndolos a la página principal del sitio web.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/ocultar-la-barra-admin-usuarios-no-sean-administradores/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Crear entradas desde un formulario externo en WordPress (sin plugins)</title>
		<link>https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/</link>
					<comments>https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Fri, 12 Jan 2018 09:09:39 +0000</pubDate>
				<category><![CDATA[Actualidad]]></category>
		<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[colaboradores]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=3554</guid>

					<description><![CDATA[Si necesitamos de colaboradores que aporten contenidos a nuestro blog, pero no queremos que tengan acceso al Dashboard (o panel de control) de WordPress, podemos facilitarles un formulario externo para que redacten el contenido y se envié pendiente de revisión. Para ello vamos a crear un página interna donde insertaremos un formulario en HTML y [&#8230;]]]></description>
										<content:encoded><![CDATA[


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Crear entradas en WordPress desde formulario externo (sin plugins)" width="500" height="281" src="https://www.youtube.com/embed/abw9jdH-2C4?start=50&#038;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Si necesitamos de colaboradores que aporten contenidos a nuestro blog, pero no queremos que tengan acceso al Dashboard (o panel de control) de WordPress, podemos facilitarles un formulario externo para que redacten el contenido y se envié pendiente de revisión.</p>



<p class="wp-block-paragraph">Para ello vamos a crear un página interna donde insertaremos un formulario en HTML y el código PHP necesario para que el contenido se envíe y se cree la entrada en el blog.</p>



<p class="wp-block-paragraph">¿Te atreves? comenzamos&#8230;</p>



<h2 class="wp-block-heading">Paso 1. Crear una página interna «Formulario de colaboradores»</h2>



<p class="wp-block-paragraph">Como si de cualquier otra página se tratase, nos dirigimos al menú Páginas y añadimos una nueva llamada por ejemplo, Formulario de colaboradores:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1609" height="699" src="https://danisanchez.net/wp-content/uploads/2018/01/004.jpg" alt="" class="wp-image-3565" srcset="https://danisanchez.net/wp-content/uploads/2018/01/004.jpg 1609w, https://danisanchez.net/wp-content/uploads/2018/01/004-300x130.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/004-1024x445.jpg 1024w, https://danisanchez.net/wp-content/uploads/2018/01/004-768x334.jpg 768w, https://danisanchez.net/wp-content/uploads/2018/01/004-1536x667.jpg 1536w" sizes="auto, (max-width: 1609px) 100vw, 1609px" /></figure>



<h2 class="wp-block-heading">Paso 2. Crear un nuevo archivo page-colaboradores.php</h2>



<p class="wp-block-paragraph">Lo primero, nos situaremos sobre el directorio de nuestro tema principal y crearemos un nuevo archivo al que llamaremos por ejemplo «page-colaboradores.php».</p>



<p class="wp-block-paragraph">Este archivo lo vamos a utilizar como plantilla (o template) para nuestro formulario, así que lo primero que vamos a incluir en el archivo es el siguiente código:</p>



<pre class="wp-block-code"><code>&lt;?php
/* Template Name: Formulario Colaboradores */
?&gt;</code></pre>



<p class="wp-block-paragraph">Ahora volvemos a la página que creamos anteriormente, recargamos y en la sección Plantilla, seleccionamos el nuevo template que acabamos de crear «Formulario colaboradores»:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="353" height="345" src="https://danisanchez.net/wp-content/uploads/2018/01/005.jpg" alt="" class="wp-image-3566" srcset="https://danisanchez.net/wp-content/uploads/2018/01/005.jpg 353w, https://danisanchez.net/wp-content/uploads/2018/01/005-300x293.jpg 300w" sizes="auto, (max-width: 353px) 100vw, 353px" /></figure></div>



<h2 class="wp-block-heading">Paso 3. Copiar el contenido de page.php a page-colaboradores.php</h2>



<p class="wp-block-paragraph">Para no trabajar sobre una página en blanco, vamos a ir al archivo page.php de nuestro tema principal, copiamos todo el código y lo pegamos en nuestro page-colaboradores.php después del código insertado en el Paso 2.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1894" height="975" src="https://danisanchez.net/wp-content/uploads/2018/01/001.jpg" alt="" class="wp-image-3561" srcset="https://danisanchez.net/wp-content/uploads/2018/01/001.jpg 1894w, https://danisanchez.net/wp-content/uploads/2018/01/001-300x154.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/001-1024x527.jpg 1024w, https://danisanchez.net/wp-content/uploads/2018/01/001-768x395.jpg 768w, https://danisanchez.net/wp-content/uploads/2018/01/001-1536x791.jpg 1536w" sizes="auto, (max-width: 1894px) 100vw, 1894px" /></figure>



<p class="wp-block-paragraph">Así trabajaremos sobre la estructura de nuestro tema principal (con su cabecera, menús, pié de página&#8230;) y nuestro formulario se integrará perfectamente con el diseño general.</p>



<h2 class="wp-block-heading">Paso 4. Eliminar el Loop de WordPress</h2>



<p class="wp-block-paragraph">Este paso es opcional, pero podemos prescindir de código que no vamos a usar. El Loop de WordPress se encarga de obtener el contenido de la base de datos correspondiente a la página o entrada en la que nos encontremos. Como en este ejercicio no vamos a cargar ningún contenido de la base de datos, si no que insertaremos el formulario manualmente, podemos eliminar todo el código del Loop de WordPress.</p>



<p class="wp-block-paragraph">Normalmente el Loop de WordPress comenzará con:</p>



<pre class="wp-block-code"><code>while(have_posts()) : the_post();</code></pre>



<p class="wp-block-paragraph">y termina con:</p>



<pre class="wp-block-code"><code>endwhile;</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="789" height="779" src="https://danisanchez.net/wp-content/uploads/2018/01/002.jpg" alt="" class="wp-image-3562" srcset="https://danisanchez.net/wp-content/uploads/2018/01/002.jpg 789w, https://danisanchez.net/wp-content/uploads/2018/01/002-300x296.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/002-768x758.jpg 768w" sizes="auto, (max-width: 789px) 100vw, 789px" /></figure>



<h2 class="wp-block-heading">Paso 5. Crear el formulario en HTML (y algo de PHP)</h2>



<p class="wp-block-paragraph">Añadimos el código HTML para el formulario compuesto por un campo de texto para insertar el título de la entrada y el editor de WordPress para añadir el contenido, sin olvidar el botón submit para enviar el formulario.</p>



<pre class="wp-block-code"><code>&lt;form name="contenidoColaboradores" id="contenidoColaboradores" method="post"&gt;
&lt;p&gt;
    &lt;input type="text" name="tituloPost" placeholder="Escribe aquí el título de la entrada"/&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;?php
    wp_editor(
        $post_obj-&gt;post_content,
        'userpostcontent',
        array('textarea_name' =&gt; 'contenido')
    ); 
?&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;input type="submit" value="Enviar Post"/&gt;
&lt;/p&gt;

&lt;?php wp_nonce_field('contenidoColaboradores'); ?&gt;
&lt;/form&gt;</code></pre>



<p class="wp-block-paragraph">La función wp_nonce_field() añade seguridad al formulario, evitando que la información llegue desde un formulario ajeno al sitio web.</p>



<p class="wp-block-paragraph">Nuestro formulario quedará de esta forma:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1115" height="828" src="https://danisanchez.net/wp-content/uploads/2018/01/003.jpg" alt="" class="wp-image-3564" srcset="https://danisanchez.net/wp-content/uploads/2018/01/003.jpg 1115w, https://danisanchez.net/wp-content/uploads/2018/01/003-300x223.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/003-1024x760.jpg 1024w, https://danisanchez.net/wp-content/uploads/2018/01/003-768x570.jpg 768w" sizes="auto, (max-width: 1115px) 100vw, 1115px" /></figure>



<h2 class="wp-block-heading">Paso 6. Procesar los datos del formulario y crear la entrada</h2>



<pre class="wp-block-code"><code>$mi_entrada = array(
 'post_title' =&amp;gt; wp_strip_all_tags($_POST&#91;'tituloPost']),
 'post_content' =&amp;gt; $_POST&#91;'contenido'],
 'post_type' =&amp;gt; 'post',
 'post_status' =&amp;gt; 'pending',
 'post_author' =&amp;gt; $user_id,
);
$nuevo_post = wp_insert_post($mi_entrada);</code></pre>



<p class="wp-block-paragraph">Por último, enviamos una entrada de prueba y esta quedará registrada como Pendiente de revisión:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="936" height="320" src="https://danisanchez.net/wp-content/uploads/2018/01/006.jpg" alt="" class="wp-image-3567" srcset="https://danisanchez.net/wp-content/uploads/2018/01/006.jpg 936w, https://danisanchez.net/wp-content/uploads/2018/01/006-300x103.jpg 300w, https://danisanchez.net/wp-content/uploads/2018/01/006-768x263.jpg 768w" sizes="auto, (max-width: 936px) 100vw, 936px" /></figure>



<p class="wp-block-paragraph">Debemos tener en cuenta que cualquier persona que acceda a la URL del formulario, podrá enviarnos entradas. Ya depende de nosotros cómo gestionamos la página del formulario, si la restringimos únicamente a usuarios registrados, o con determinado rol, o impedimos el acceso por contraseña, etc.</p>



<h2 class="wp-block-heading">Actualización para marcar la categoría seleccionada de la entrada.</h2>



<p class="wp-block-paragraph">Seleccionar la categoría o categorías de destino de la entrada es algo más complejo. Primero tendríamos que añadir al formulario la lista de categorías disponibles.</p>



<pre class="wp-block-code"><code>foreach (get_terms('category', array('hide_empty' =&gt; false,)) as $tag){ 
    echo "&lt;input type='checkbox' name='" . $tag-&gt;slug . "' value='" . $tag-&gt;slug . "'/&gt; 
    &lt;label for='".$tag-&gt;slug."'&gt;". $tag-&gt;name . "&lt;/label&gt;&lt;br/&gt;"; 
}</code></pre>



<p class="wp-block-paragraph">Eso debería cargar las categorías disponibles en checkboxs. Después guardar en un array las categorías que haya marcado el usuario para la entrada:</p>



<pre class="wp-block-code"><code>$categorias = array(); 

foreach(get_terms('category', array('hide_empty' =&gt; false,)) as $tag){ 
    $termino_taxonomia = $tag-&gt;slug; 
    if(isset($_POST&#91;$termino_taxonomia])){ 
        $term.$termino_taxonomia = term_exists($termino_taxonomia, 'category', 0);   
        array_push($categorias, $term.$termino_taxonomia&#91;'term_taxonomy_id']); 
    } 
} 

$categorias_marcadas = array( 'category' =&gt; $categorias );</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Y añadir las categorías marcadas a la Query:</p>



<pre class="wp-block-code"><code>$post = array( 
    'post_title' =&gt; "Lo que sea", 
    'post_content =&gt; $_POST&#91;'contenido'], 
    'tax_input' =&gt; $categorias_marcadas, 
    'post_status' =&gt; 'pending' 
);</code></pre>



<p class="wp-block-paragraph">Y crear el post:</p>



<pre class="wp-block-code"><code>$the_post = wp_insert_post($post);</code></pre>



<p class="wp-block-paragraph">Se que es algo complejo, pero hay que hacer todos esos pasos para que las categorías marcadas queden registradas en el post.</p>



<p class="wp-block-paragraph">Espero que os haya resultado de utilidad y hasta el próximo post! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/crear-entradas-desde-formulario-externo-wordpress-sin-plugins/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
	</channel>
</rss>
