• Wesley Silva

    (@wesleydeveloper)


    Pessoal estou criando um plugin e preciso criar algumas paginas, estou tendo problemas para criar um novo modelo de pagina.
    Minha estrutura de pasta esta da seguinte forma
    -plugin
    –app
    —classes
    —-Gen_Pages // classe responsável pela cria??o das paginas
    —templates
    —-form-curriculum.php // modelo de pagina a ser criado

    public function add($template, $title, $content = '')
    	{
    		if (is_admin()) {
    			$tpl = plugin_dir_path(__DIR__) . "templates/{$template}.php";
    			if (file_exists($tpl)) {
    				add_filter('page_template', array($this, 'set_template'), 10, 2, $tpl);
    			}
    			$this->pages[] = [
    				'post_title' => $title,
    				'post_type' => 'page',
    				'page_template' => $template.".php",
    				'post_status' => 'publish',
    				'post_name' => $this->slug_gen($title),
    				'post_content' => $content,
    				'post_author' => get_current_user_id()
    			];
    		}
    	}
    	public function run()
    	{
    		if (is_admin()){
    			foreach ($this->pages as $page){
    				if(!isset(get_page_by_title($page['post_title'])->ID) && !$this->slug_exists($page['post_name'])){
    					$page_id = wp_insert_post($page);
    				}
    			}
    		}
    	}
    
    	public function set_template($page_template, $tpl)
    	{
    		$page_template = $tpl;
    
    		return $page_template;
    	}

    Poderiam me ajudar a identificar o que estou fazendo de errado

Viewing 4 replies - 1 through 4 (of 4 total)
  • Claudio Sanches

    (@claudiosanches)

    N?o ficou muito claro o problema, já que você apenas mostrou o código, mas n?o descreveu o problema.
    Se for avaliar apenas pelo código, eu posso dizer o seguinte:

    add_filter('page_template', array($this, 'set_template'), 10, 2, $tpl);
    

    Essa parte do código n?o esta correta, veja que add_filter aceita apenas 4 paramentos, esse $tpl n?o vai ser passado para a fun??o set_template.
    Se você quer fazer algo assim, iria exigir um pouco mais de lógica, como passar uma configurar uma variável que guarda todos os IDs dos templates e o caminho deles, para ent?o dentro de set_template verificar, entretanto é difícil saber o que é retornado no filtro page_template, porque n?o parece ser nativo do WordPress e n?o tem comentário no código dizendo a natureza, daria para usar apenas durante o carregamento também e sem verificar nenhum ID, mas n?o sei se essa classe registra mais de um template ao mesmo tempo e se isso iria gerar algum problema.
    Enfim, o erro esta do código que você mostrou é provavelmente no add_filter, entretanto é complicado sugerir qualquer solu??o sem uma ideia melhor de como esse código funciona ao todo e sem uma descri??o do que é o problema para você e o que você quer obter com esse código ou a sua modifica??o.

    Claudio Sanches

    (@claudiosanches)

    Alias, vamos tomar bronca por estar comentando em português aqui, local correto para perguntas em português é em https://br.www.ads-software.com/support/

    Thread Starter Wesley Silva

    (@wesleydeveloper)

    Obrigado Sanches!
    E desculpa por ter postado aqui

    Thread Starter Wesley Silva

    (@wesleydeveloper)

    O filtro page_template que estou usando peguei na documenta??o https://developer.www.ads-software.com/reference/hooks/type_template/ e o quinto argumento no filtro peguei referências em https://wordpress.stackexchange.com/questions/45901/passing-a-parameter-to-filter-and-action-functions. O fato é que ja tentei de várias maneiras, inclusive n?o passando o 5 argumento, deixando essa responsabilidade para um atributo da classe. Mas mesmo assim n?o funcionou, de qualquer forma vou continuar tentando

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘N?o estou conseguindo configurar um novo page_template’ is closed to new replies.