Usando um tema dentro de um diretório Plugin

3

Estou criando um plug-in compatível com dispositivos móveis e coloco o diretório do tema dentro do diretório do plug-in.

Se for um navegador para dispositivos móveis, como posso redirecionar para o tema no diretório do plug-in?

  /wp-content/plugins/mobview/theme/

Consegui usar o seguinte redirecionamento:

wp_redirect( plugins_url('/mobview/theme/index.php') );
exit ;

Mas estou meio que perdido no diretório redirecionado dentro da estrutura do WordPress.

    
por Hamza 27.12.2010 / 11:17

4 respostas

3

Oi @Hamza:

Acho que o que você está procurando fazer é que o seu plug-in conecte 'template_include' para que ele carregue um arquivo do diretório do seu plugin. Aqui está o código inicial para o seu plugin:

<?php
/*
Plugin Name: Mobile View Plugin
*/

if (is_mobile_user()) // YOU NEED TO DEFINE THIS FUNCTION
  class MobileViewPlugin {
    static function on_load() {
      add_filter('template_include',array(__CLASS__,'template_include'));
    }
    function template_include($template_file) {
      return dirname( __FILE__) . '/theme/index.php';
    }
  }
  MobileViewPlugin::on_load();
}

É claro que isso exigirá que você de alguma forma filtre quando não for um usuário móvel definindo a is_mobile_user() function (ou similar) e isso também significa que seu /theme/index.php precisará lidar com tudo, incluiu todas as URLs como você basicamente ignorou o roteamento de URL padrão, fazendo isso (ou o seu poderia inspecionar os valores de template_file e reutilizar a lógica, roteando para arquivos equivalentes em seu diretório plugin.) Boa sorte.

P.S. Isso não fornece uma solução móvel para o administrador. Isso seria 10 vezes mais envolvido.

    
por MikeSchinkel 27.12.2010 / 15:11
4

Você entendeu mal a mecânica de como o tema funciona. Ele tem index.php template, mas a solicitação ainda é processada pelo WordPress principal index.php na raiz do site. Não faz sentido redirecionar o visitante para a pasta do tema porque os temas não devem ser visitados diretamente (eles esperam que o núcleo do WP seja carregado para eles e outros).

Eu não sou proficiente com esses plug-ins, mas imagino que eles provavelmente estejam usando template_redirect hook para carregar seus modelos em vez daqueles do tema ativo na correspondência com o navegador para dispositivos móveis.

Eu acho que eles são alguns plugins sobre este tópico no repositório oficial, você pode olhar através de seu código para obter uma idéia de técnicas comuns usadas.

    
por Rarst 27.12.2010 / 12:42
2

se eu não estiver errado então tente este código

$includes_path = TEMPLATEPATH . '/your folder name/';

então escreva isso

require_once ($includes_path . 'file name');

    
por Niraj Chauhan 27.12.2010 / 11:55
0

bem,

eu acho, eu expliquei mal a minha pergunta, mas eu expliquei mais nos sub-comentários:

Tudo que eu preciso é: ativar outro tema, em um diretório diferente, e fazer tal coisa

primeiro:

registre o novo diretório do tema:

register_theme_directory( WP_PLUGIN_DIR . '/mobview/theme' ) ;

2º:

para adicionar um filtro para usar este tema:

function loading_mobv_template() {
    return 'hamzamob';
}

function loading_mobv_style() {
    return 'hamzamob';

 }

dd_filter('stylesheet','loading_mobv_style');
add_filter('template','loading_mobv_template'); 

Agora, tudo o que preciso fazer é selecionar se o navegador é um celular ou não e ativar a ação.

Obrigado.

atualização: esta é a resposta para minha primeira pergunta. Obrigado :)

    
por Hamza 27.12.2010 / 14:05