Estoy ejecutando un multisitio de wordpress con 2 blogs (site1.com y site2.com)
Todo el sitio comparte el mismo tema, así como el archivo functions.php.
Tengo el siguiente filtro que necesito poner en el archivo function.php, pero necesito que este filtro afecte solo a 1 blog: site2.com
El filtro es el siguiente:
add_filter( 'get_manager_nav', 'set_manager_nav' );
function set_manager_nav( $urls ) {
unset($urls['voucher']);
return $urls;
}
¿Hay alguna manera de aplicar este filtro solo a 1 sitio?
Lo que hice en cambio es que creé un nuevo complemento, agregué la función al complemento y activé el complemento solo en site2.com.
Está funcionando muy bien, pero supongo que usar un fragmento simple es mucho mejor que usar un complemento, entonces, ¿hay alguna manera de hacerlo usando un fragmento?
En mi opinión, la mejor manera de apuntar a un subsitio dentro de varios sitios es usar el get_current_blog_id()
función dentro de la función llamada por el filtro. Aquí hay un ejemplo de un código que funcionaría:
<?php
function function_to_call(){
if( get_current_blog_id() === 1 ){
// Return something if the site ID matches the number one...
}
// Return something if the site ID does not match the number 1
}
add_filter( 'filter_name', 'function_to_call' );
?>
Puede obtener el ID del sitio al que desea apuntar yendo a https://example.org/wp-admin/network/sites.php dónde https://ejemplo.org se reemplaza con su dominio.
Hay algunos beneficios de este enfoque sobre otros enumerados aquí.
- Esto funcionará si tiene varias versiones de su instalación multisitio utilizando diferentes dominios. Por ejemplo, es posible que tenga http://localhost/sitio1, site1.example.org y site1.staging.example.org. Si verificó el dominio, el filtro se rompería en todos los sitios excepto en producción. Si usa la identificación, debería funcionar en todos los ámbitos.
- Otras opciones, como crear un tema secundario o un complemento, funcionan, pero tienden a ser exageradas cuando se trata de ejecutar una función en un solo gancho.
Esto es un poco complicado. Es posible que deba verificar el nombre o la identificación del sitio antes de agregar el filtro.
Su función permanece como está, pero la parte del filtro se convierte en:
$current_site = get_current_site();
if($current_site->domain == 'site2.com')
add_filter( 'get_manager_nav', 'set_manager_nav' );
Puede leer más sobre get_current_site() aquí.
Sé que esto fue hace un tiempo, pero también he estado tratando de agregar una función a un solo multisitio. El método es un poco confuso al principio, ya que debe pasar del administrador multisitio al administrador de la red principal. La forma de hacer esto es crear un tema secundario a través del administrador de la red principal (se usa un complemento creador de temas secundarios. Hay bastantes). Mientras aún está en el administrador de la red, seleccione el encabezado principal de ‘temas’, luego ‘editor’ para mostrar el tema actual, luego ‘seleccione el tema para editar’ en la parte superior derecha y seleccione el tema secundario del menú desplegable. Agrega el nuevo código a functions.php Una vez que hayas agregado lo que necesitas, vuelve al tablero del multisitio para el que necesitabas la función y activa el tema secundario. Si necesita otra función para un multisitio diferente, vuelva al administrador de la red y cree otro tema secundario (actualmente tengo veintisiete como mi tema principal, luego child1 para multisitio 1 y child2 para multisitio 2 Es un poco complicado, pero una vez que comprenda que estos Los cambios deben hacerse desde el administrador de la red, es bastante fácil, espero que ayude.
-
Desea volver a formatear su respuesta. Quiere que otras personas lean y entiendan esto; entonces la forma importa. Sugerencia: el espaciado vertical (también conocido como párrafos) ayudaría 😉
– Gato fantasma
8 mayo 2017 a las 15:38
¿Hiciste este trabajo en un solo sitio? porque tengo un problema similar, una función diferente, pero después del activador, funciona en el sitio web objetivo, pero otros sitios no muestran contenido en absoluto.
Mi código:
add_filter('the_content', 'wpse_ad_content');
function wpse_ad_content($content)
{
if ( 2 !== get_current_blog_id() )
return;
if (!is_single()) return $content;
$paragraphAfter = 2; //Enter number of paragraphs to display ad after.
$content = explode("</p>", $content);
$new_content="";
for ($i = 0; $i < count($content); $i++) {
if ($i == $paragraphAfter) {
$new_content.= '<div style="width: 300px; height: 250px; padding: 6px 6px 6px 0; float: left; margin-left: 0; margin-right: 18px;">';
$new_content.= 'Enter your ad code here....';
$new_content.= '</div>';
}
$new_content.= $content[$i] . "</p>";
}
return $new_content;
}
Podrías revisar el
blog_id
– pbaldauf
22 de febrero de 2015 a las 10:49