自定义帖子类型显示自定义主页,而不是存档页面

时间:2014-07-16 作者:Nate

我有一个自定义的帖子类型设置(实际上有两个)没有正确显示。我希望这两种帖子的问题是一样的。

这是我的一种帖子类型(公文包)的代码。第二个非常相似。

<?php
add_action(\'init\', \'ccd_portfolio\');

function ccd_portfolio() {

    $labels = array(
        \'name\' => _x(\'Portfolio\', \'post type general name\'),
        \'singular_name\' => _x(\'Project\', \'post type singular name\'),
        \'add_new\' => _x(\'Add New\', \'ccd_portfolio item\'),
        \'add_new_item\' => __(\'Add New Project\'),
        \'edit_item\' => __(\'Edit Project\'),
        \'new_item\' => __(\'New Project\'),
        \'view_item\' => __(\'View Project\'),
        \'search_items\' => __(\'Search Projects\'),
        \'not_found\' =>  __(\'Nothing found\'),
        \'not_found_in_trash\' => __(\'Nothing found in Trash\'),
        \'parent_item_colon\' => \'\'
    );

    $args = array(
        \'labels\' => $labels,
        \'public\' => true,
        \'publicly_queryable\' => true,
        \'show_ui\' => true,
        \'query_var\' => true,
        \'menu_icon\' => get_stylesheet_directory_uri() . \'/images/icons/plugins/portfolio.png\',
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'menu_position\' => null,
        \'supports\' => array(\'title\', \'editor\', \'excerpt\', \'author\'),
        \'can_export\' => true,
        \'show_in_menu\' => true,
        \'has_archive\' => true,
        \'rewrite\' => array(\'slug\' => \'work\')
      ); 

    register_post_type( \'portfolio\' , $args );
    flush_rewrite_rules();
}

add_action("admin_init", "ccdport_admin_init");

function ccdport_admin_init(){
  add_meta_box("mb_ccdport_details", "Project Details", "ccdport_details", "portfolio", "normal", "high");
  add_meta_box("mb_ccdport_client", "Client", "ccdport_client", "portfolio", "side", "high");
}

add_action( \'admin_enqueue_scripts\', \'ccdport_add_datepicker\' );
function ccdport_add_datepicker(){
  wp_enqueue_script( \'jquery-ui-datepicker\' );
  wp_enqueue_style(\'jquery-datepicker-style\', \'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css\');
}
function ccdport_details(){
  global $post;
  $custom = get_post_custom($post->ID);
  $preview_url = $custom[\'preview_url\'][0];
  $start_date = $custom[\'start_date\'][0];
  $end_date = $custom[\'end_date\'][0];
?>
  <p><label>Preview URL: <strong>http://</strong>
    <input type="text" size="35" name="preview_url" value="<?php echo $preview_url; ?>" /></p>
  <p><label>Start date:</label>
    <input id="startDate" type="text" size="15" class="DatePicker" name="start_date" value="<?php echo $start_date; ?>" /> &nbsp;
    <label>End date:</label>
    <input id="endDate" type="text" size="15" class="DatePicker" name="end_date" value="<?php echo $end_date; ?>" /></p>
    <script>
      jQuery(document).ready(function() {
        jQuery(\'input.DatePicker\').datepicker({
          dateFormat : \'dd-mm-yyyy\'
        });
      });
    </script>
<?php
}

function ccdport_client(){
  global $post;
  $custom = get_post_custom($post->ID);
  $client = $custom[\'project_client\'][0];
  $name = $custom[\'client_name\'][0];
  $args = array(
    \'post_type\' => \'clients\',
    \'posts_per_page\' => -1,
    \'orderby\' => \'name\',
    \'order\' => \'ASC\'
  );
?>
  <p><label>Client name</label></p>
  <input type="text" name="client_name" value="<?php echo $name; ?>" />
  <p><label>Organisation</label></p>
<?php
  $query = new WP_Query( $args );
  if ( $query->have_posts() ){
    echo \'<select name="project_client">\';
    while ( $query->have_posts() ){
      $query->the_post();
      $slug = $post->post_name;
      echo \'<option value="\'.$slug.\'" \'.selected($slug, $client).\'>\'.get_the_title().\' (\'.$slug.\')</option>\';
    }
    echo \'</select>\';
  }
  else { echo \'<p>There are currently no clients registered</p>\'; }
}

add_action(\'save_post\', \'ccdport_save_details\');

function ccdport_save_details(){
  global $post;

  update_post_meta($post->ID, "client_name", $_POST["client_name"]);
  update_post_meta($post->ID, "project_client", $_POST["project_client"]);
  update_post_meta($post->ID, "portfolio", $_POST["portfolio"]);
  update_post_meta($post->ID, "preview_url", $_POST["preview_url"]);
}
?>
每个帖子类型都包含在一个单独的文件中,并被调用到函数中。带有include命令的php。这些文件完美地显示在管理区域,帖子被完美地保存,等等。但是,主题文件(archive-portfolio.php和single-portfolio.php)没有加载。相反,将显示我的自定义主页。

我不知道会是什么问题。我已经用每种帖子类型刷新了重写规则,删除它也没有任何作用。我最近才开始使用自定义帖子类型,所以任何帮助都会非常有用。我已经看过了其他答案,但它们似乎对我的情况没有帮助。我试着重新保存我的永久链接,但没有用。我试过换衣服\'has_archive\' => true\'has_archive\' => \'portfolio\', 没有什么我错过了什么吗?很可能是显而易见的事情?

2 个回复
SO网友:Ethan O\'Sullivan

根据OP在他们的问题中添加的答案,我将其分开。简而言之:

。。。停用和重新激活插件,评论和取消注释,我现在让我的网站按预期工作

以下是OP给出的详细说明:

我的函数中有几个自定义的帖子类型。php文件。每一个都有自己的特点。php文件,使它们更易于管理,并包含在函数中。php。然而,我与他们有一些问题,这些问题已经解决了。当我包含多个页面时,页面顶部有一个空格。php文件。这在不久前就解决了,但作为临时修复,我将页面封装在if(is\\u admin())函数中。我不知道这也会影响模板页面

SO网友:DavGarcia

我有一个类似的问题-添加了一个新的自定义帖子类型,其slug是一个旧页面。永久删除旧页面后,我的自定义帖子及其存档将不会显示,相反,我得到了主题主页。

解决方法是转到“设置”>“永久链接”,将其临时更改为其他内容,按“保存”,将其更改回原始设置,然后再次按“保存”。现在,自定义帖子类型正在工作。

结束

相关推荐

Displaying posts on Homepage

我想知道如何在我的主页上添加一个列,在“最新消息”标题下显示博客页面中的五篇最新帖子。这是我的开发网站的链接。http://pur-vent.29kdev.com/下面是我认为必须编辑的代码,以实现这一点。如果有人能提供任何建议,我将不胜感激。提前谢谢。迈克 “” <?php if ( get_optio

自定义帖子类型显示自定义主页,而不是存档页面 - 小码农CODE - 行之有效找到问题解决它

自定义帖子类型显示自定义主页,而不是存档页面

时间:2014-07-16 作者:Nate

我有一个自定义的帖子类型设置(实际上有两个)没有正确显示。我希望这两种帖子的问题是一样的。

这是我的一种帖子类型(公文包)的代码。第二个非常相似。

<?php
add_action(\'init\', \'ccd_portfolio\');

function ccd_portfolio() {

    $labels = array(
        \'name\' => _x(\'Portfolio\', \'post type general name\'),
        \'singular_name\' => _x(\'Project\', \'post type singular name\'),
        \'add_new\' => _x(\'Add New\', \'ccd_portfolio item\'),
        \'add_new_item\' => __(\'Add New Project\'),
        \'edit_item\' => __(\'Edit Project\'),
        \'new_item\' => __(\'New Project\'),
        \'view_item\' => __(\'View Project\'),
        \'search_items\' => __(\'Search Projects\'),
        \'not_found\' =>  __(\'Nothing found\'),
        \'not_found_in_trash\' => __(\'Nothing found in Trash\'),
        \'parent_item_colon\' => \'\'
    );

    $args = array(
        \'labels\' => $labels,
        \'public\' => true,
        \'publicly_queryable\' => true,
        \'show_ui\' => true,
        \'query_var\' => true,
        \'menu_icon\' => get_stylesheet_directory_uri() . \'/images/icons/plugins/portfolio.png\',
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'menu_position\' => null,
        \'supports\' => array(\'title\', \'editor\', \'excerpt\', \'author\'),
        \'can_export\' => true,
        \'show_in_menu\' => true,
        \'has_archive\' => true,
        \'rewrite\' => array(\'slug\' => \'work\')
      ); 

    register_post_type( \'portfolio\' , $args );
    flush_rewrite_rules();
}

add_action("admin_init", "ccdport_admin_init");

function ccdport_admin_init(){
  add_meta_box("mb_ccdport_details", "Project Details", "ccdport_details", "portfolio", "normal", "high");
  add_meta_box("mb_ccdport_client", "Client", "ccdport_client", "portfolio", "side", "high");
}

add_action( \'admin_enqueue_scripts\', \'ccdport_add_datepicker\' );
function ccdport_add_datepicker(){
  wp_enqueue_script( \'jquery-ui-datepicker\' );
  wp_enqueue_style(\'jquery-datepicker-style\', \'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css\');
}
function ccdport_details(){
  global $post;
  $custom = get_post_custom($post->ID);
  $preview_url = $custom[\'preview_url\'][0];
  $start_date = $custom[\'start_date\'][0];
  $end_date = $custom[\'end_date\'][0];
?>
  <p><label>Preview URL: <strong>http://</strong>
    <input type="text" size="35" name="preview_url" value="<?php echo $preview_url; ?>" /></p>
  <p><label>Start date:</label>
    <input id="startDate" type="text" size="15" class="DatePicker" name="start_date" value="<?php echo $start_date; ?>" /> &nbsp;
    <label>End date:</label>
    <input id="endDate" type="text" size="15" class="DatePicker" name="end_date" value="<?php echo $end_date; ?>" /></p>
    <script>
      jQuery(document).ready(function() {
        jQuery(\'input.DatePicker\').datepicker({
          dateFormat : \'dd-mm-yyyy\'
        });
      });
    </script>
<?php
}

function ccdport_client(){
  global $post;
  $custom = get_post_custom($post->ID);
  $client = $custom[\'project_client\'][0];
  $name = $custom[\'client_name\'][0];
  $args = array(
    \'post_type\' => \'clients\',
    \'posts_per_page\' => -1,
    \'orderby\' => \'name\',
    \'order\' => \'ASC\'
  );
?>
  <p><label>Client name</label></p>
  <input type="text" name="client_name" value="<?php echo $name; ?>" />
  <p><label>Organisation</label></p>
<?php
  $query = new WP_Query( $args );
  if ( $query->have_posts() ){
    echo \'<select name="project_client">\';
    while ( $query->have_posts() ){
      $query->the_post();
      $slug = $post->post_name;
      echo \'<option value="\'.$slug.\'" \'.selected($slug, $client).\'>\'.get_the_title().\' (\'.$slug.\')</option>\';
    }
    echo \'</select>\';
  }
  else { echo \'<p>There are currently no clients registered</p>\'; }
}

add_action(\'save_post\', \'ccdport_save_details\');

function ccdport_save_details(){
  global $post;

  update_post_meta($post->ID, "client_name", $_POST["client_name"]);
  update_post_meta($post->ID, "project_client", $_POST["project_client"]);
  update_post_meta($post->ID, "portfolio", $_POST["portfolio"]);
  update_post_meta($post->ID, "preview_url", $_POST["preview_url"]);
}
?>
每个帖子类型都包含在一个单独的文件中,并被调用到函数中。带有include命令的php。这些文件完美地显示在管理区域,帖子被完美地保存,等等。但是,主题文件(archive-portfolio.php和single-portfolio.php)没有加载。相反,将显示我的自定义主页。

我不知道会是什么问题。我已经用每种帖子类型刷新了重写规则,删除它也没有任何作用。我最近才开始使用自定义帖子类型,所以任何帮助都会非常有用。我已经看过了其他答案,但它们似乎对我的情况没有帮助。我试着重新保存我的永久链接,但没有用。我试过换衣服\'has_archive\' => true\'has_archive\' => \'portfolio\', 没有什么我错过了什么吗?很可能是显而易见的事情?

2 个回复
SO网友:Ethan O\'Sullivan

根据OP在他们的问题中添加的答案,我将其分开。简而言之:

。。。停用和重新激活插件,评论和取消注释,我现在让我的网站按预期工作

以下是OP给出的详细说明:

我的函数中有几个自定义的帖子类型。php文件。每一个都有自己的特点。php文件,使它们更易于管理,并包含在函数中。php。然而,我与他们有一些问题,这些问题已经解决了。当我包含多个页面时,页面顶部有一个空格。php文件。这在不久前就解决了,但作为临时修复,我将页面封装在if(is\\u admin())函数中。我不知道这也会影响模板页面

SO网友:DavGarcia

我有一个类似的问题-添加了一个新的自定义帖子类型,其slug是一个旧页面。永久删除旧页面后,我的自定义帖子及其存档将不会显示,相反,我得到了主题主页。

解决方法是转到“设置”>“永久链接”,将其临时更改为其他内容,按“保存”,将其更改回原始设置,然后再次按“保存”。现在,自定义帖子类型正在工作。

相关推荐

Change homepage url

有没有办法做到这一点?我试着用谷歌搜索它,但我不知道怎么称呼它。siteurl.com - 对于整个websiteurl.com/news - 包含新闻的主页当我添加siteurl.com 我必须直接重定向到siteurl.com/new. 这是必要的,因为谷歌的一些分析设置将更加精确。非常感谢你的帮助。编辑:siteurl.com/news - 需要是“frontpage”并设置为“homepage”(主题模板问题,将其更改为自定义页面确实很复杂。类似“假url”之类的东西,是否可以实现这一点?