← WordPress

Custom Post Types

Lida 2608 vezes

Offline

AnaMartelo 
Administrador
Mensagens 2071 Gostos 25
Feedback +28

Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Pessoal,

Estou a preparar um novo projecto e o theme que estou a usar trabalha com os custom post types, por exemplo para adicionar "peças de portfólio".

O theme é o mesmo que usei aqui: www.freelancerportugal.com

Se repararem, quando entram na secção "Oradores" o url que fica é freelancerportugal.com/oradores ! Mas se entrarem na página de um orador, já fica freelancerportugal.com/portfolio/nomedoorador !

Ora isto acontece porque os "posts" dos oradores são adicionados não como post normal, mas como uma "peça do portfolio" que é disponibilizada pelo próprio theme.

O que eu queria era mudar essa url, ou seja, tirar onde diz "portfolio" e aparecer o nome da página antes.. neste caso seria /oradores/nomedoorador!

Alguém sabe como fazê-lo?
Offline

Mazcastro 
Membro
Mensagens 4 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 First Post Karma Avatar Seventh year Anniversary

OFF Topic: Ana Martelo, que vive em Faro?

MAC :)
Offline

AnaMartelo 
Administrador
Mensagens 2071 Gostos 25
Feedback +28

Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

OFF Topic: Ana Martelo, que vive em Faro?

MAC :)

Existem mensagens privadas ou e-mail :S

Não, Aveiro!
Offline

Jota 
Editor
Mensagens 773 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Hmm,

Posso estar errado, da para fazer mas vais ter que mexer no codigo da theme.

Especialmente na parte em que faz o registo do custom post "portfolio".

Basicamente Custom Post types tem que ter essa estrutura no URL para nao exister colisão com os posts normais do blog.

Agora pode haver varias maneiras de tentares modificar, mas depende da maneira que a theme foi programada.

Tenta procurar onde na theme o custom post type e registado : http://codex.wordpress.org/Function_Reference/register_post_type

E depois podes tentar modificar o slug no argumento rewrite.

Código: [Seleccione]
'rewrite'             => array ( 'slug' => 'oradores' )

Mas mesmo assim nao sei se ira funcionar, se calhar fica /portfolio/oradores/nomedoorador.

Talvez a maneira mais facil seja mesmo registares o custom post como "oradores".

Sinceramente tenho que fazer um pouco mais de pesquisa para te poder dar uma resposta, e saber como a theme foi programada.
Offline

AnaMartelo 
Administrador
Mensagens 2071 Gostos 25
Feedback +28

Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Bem, eu tenho o portfolio-custom-type.php com o seguinte código:

Citar
<?php
add_action('init', 'create_portfolio');
function create_portfolio() {
   
      $labels = array(
      'name' => _x('My Portfolio', 'post type general name'),
      'singular_name' => _x('Portfolio Item', 'post type singular name'),
      'add_new' => _x('Add New', 'portfolio item'),
      'add_new_item' => __('Add New Portfolio Item'),
      'edit_item' => __('Edit Portfolio Item'),
      'new_item' => __('New Portfolio Item'),
      'view_item' => __('View Portfolio Item'),
      'search_items' => __('Search Portfolio'),
      'not_found' =>  __('Nothing found'),
      'not_found_in_trash' => __('Nothing found in Trash'),
      'parent_item_colon' => ''
      );
   
       $portfolio_args = array(
           'labels' => $labels,
           'label' => __('Portfolio'),
           'singular_label' => __('Portfolio'),
           'public' => true,
           'show_ui' => true,
           'capability_type' => 'post',
           'hierarchical' => false,
           'rewrite' => true,
           'supports' => array('title', 'editor', 'thumbnail')
        );
       register_post_type('portfolio',$portfolio_args);
}

add_action("admin_init", "add_portfolio");
add_action('save_post', 'update_screenshot_details');

function add_portfolio(){
   add_meta_box("portfolio_details", "Portfolio Options", "portfolio_options", "portfolio", "normal", "low");
}

function portfolio_options(){
   global $post;
   $custom = get_post_custom($post->ID);
   $screenshot1 = $custom["screenshot1"][0];
   
?>

   <style>
      #portfolio-options label { font-size: 12px; margin: 0 15px 0 0; }
      #portfolio-options input { border: 1px #ddd solid; padding: 8px; width: 300px; }
   </style>
   
   <div id="portfolio-options">
      <label>Large Screenshot (Max. Width: 430px):</label><input name="screenshot1" value="<?php echo $screenshot1; ?>" />      
   </div><!--end portfolio-options-->   

<?php

}
function update_screenshot_details(){
   global $post;
   update_post_meta($post->ID, "screenshot1", $_POST["screenshot1"]);
}

add_filter("manage_edit-portfolio_columns", "portfolio_edit_columns");
 
function portfolio_edit_columns($portfolio_columns){
   $portfolio_columns = array(
      "cb" => "<input type=\"checkbox\" />",
      "title" => "Project Title",
   );
   return $portfolio_columns;
}
?>
Offline

Jota 
Editor
Mensagens 773 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

E tens um server de testes?

Que a minha solucao e sem eu testar e sinceramente nao tenho a certeza se ira funcionar.

Tens:

Código: [Seleccione]
$portfolio_args = array(
           'labels' => $labels,
           'label' => __('Portfolio'),
           'singular_label' => __('Portfolio'),
           'public' => true,
           'show_ui' => true,
           'capability_type' => 'post',
           'hierarchical' => false,
           'rewrite' => true,
           'supports' => array('title', 'editor', 'thumbnail')
        );

Talvez:

Código: [Seleccione]
$portfolio_args = array(
           'labels' => $labels,
           'label' => __('Portfolio'),
           'singular_label' => __('Portfolio'),
           'public' => true,
           'show_ui' => true,
           'capability_type' => 'post',
           'hierarchical' => false,
           'rewrite'  => array ( 'slug' => 'oradores' ),
           'supports' => array('title', 'editor', 'thumbnail')
        );

Talvez funcione, mas nao posso garantir, por isso tem cuidado a testar em produção.

Outra maneira estava a pensar e talvez usares o .htaccess e fazeres o redirect mas acho que e uma solução mais feia.
Offline

AnaMartelo 
Administrador
Mensagens 2071 Gostos 25
Feedback +28

Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Não.. :(

Não tenho servidor de testes..
Offline

Jota 
Editor
Mensagens 773 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Ok,

Tens que me dar um pouco de tempo para eu testar algumas soluções no meu pc, para depois ser menos risco fazeres no teu.

Ou entao alguem aparece aqui e diz-te outra solucao antes de eu acabar.

Offline

Jota 
Editor
Mensagens 773 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Hmm

Assim num teste rapido nao da bem para o que queres, porque o wordpress poderá entrar em colisão.

Agora podes e ter a pagina principal: http://freelancerportugal.com/oradores/

E depois: http://freelancerportugal.com/orador/luciano-larross-jornalismo/

Para tal tens que adicionar a tal linha.

Código: [Seleccione]
'rewrite'  => array ( 'slug' => 'orador' ),

Faz um backup do ficheiro portfolio-custom-type.php

Faz a modificao.

E depois tens que ir apcoes - permalink, mas nao precisas de fazer nada e mesmo so para fazer o rebuild do htaccess penso eu.

Depois vee se funciona, senao funcionar mete outra vez o ficheiro original ate encontrarmos solucao.
Offline

AnaMartelo 
Administrador
Mensagens 2071 Gostos 25
Feedback +28

Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Penso que esteja resolvido!

Mais uma vez, Jota, muito obrigado :D
Offline

Jota 
Editor
Mensagens 773 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Penso que esteja resolvido!

Mais uma vez, Jota, muito obrigado :D

Nao tem problema.
Offline

Eduardo Santos 
Equipa
Mensagens 1097 Gostos 1
Feedback +4

Troféus totais: 29
Trófeus: (Ver todos)
Tenth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

@Jota, http://jsfiddle.net

Já utilizei, e dá bastante jeito. :P
Offline

Jota 
Editor
Mensagens 773 Gostos 0
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

@edumicro obrigado, sem duvida que vai dar jeito no futuro.