Page-Linking Structure

时间:2017-06-26 作者:HappyHands31

我正在尝试从头创建一个自定义WordPress主题。如您所见,我的文件结构类似于此-页脚。php,标题。php,索引。php,关于。php和联系人。我的主题文件夹中的php:

enter image description here

我已经完成了主页(index.php),现在我正在尝试创建这些其他页面并链接到它们。但是当我从home page, 我唯一能让他们链接的方法就是通过这个又长又丑的链接结构:

enter image description here

我想知道我是不是走错了路。如果我在WordPress中创建新页面,而不是通过FTP手动创建,这是否允许我更改永久链接结构,以便new.gatewaywebdesign.com/contact.php 而不是new.gatewaywebdesign.com/wp-content/themes/gatewaywebdesign/contact.php?

我继续尝试创建一个contact WordPress仪表板中的页面,但它不能让我摆脱index.php 站点名称后:

enter image description here

对编辑/修剪链接结构还有其他建议吗?谢谢

4 个回复
最合适的回答,由SO网友:HappyHands31 整理而成

这个问题的答案是肯定的,在WordPress中创建页面确实允许您更改链接结构。我需要做的是返工index.php 所以它使用了WordPress Loop, 然后将首页显示为WordPress仪表板中设置的任何首页。所以我的index.php 结果是这样的:

<?php get_header();?>

<?php if ( have_posts() ) : ?>

// Set front page
<?php if ( is_home() && ! is_front_page() ) : ?>
// Display page title
<header>
<h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
</header>
<?php endif; ?>

<?php
// Start the loop.
while ( have_posts() ) : the_post();

/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( \'content\', get_post_format() );

// End the loop.
endwhile;

// Previous/next page navigation.
/* the_posts_pagination( array(
\'prev_text\'          => __( \'Previous page\', \'twentyfifteen\' ),
\'next_text\'          => __( \'Next page\', \'twentyfifteen\' ),
\'before_page_number\' => \'<span class="meta-nav screen-reader-text">\' . __( \'Page\', \'twentyfifteen\' ) . \' </span>\',
) );*/

// If no content, include the "No posts found" template.
else :
get_template_part( \'content\', \'none\' );

endif;
?>

<?php get_footer();?>
确保您的主题包含所有必要的核心文件-single.php, content-link.php, content-none.php, content-page.php, content-search.php, content.php, 和page.php.

然后在WordPress中创建一个菜单,并将您在WordPress中创建的页面设置在该菜单中。

在里面header.php, 在导航菜单中设置指向不同页面的链接,如下所示:

<div class="menu-container"><!--menu items-->
<?php $main_menu = inits_get_main_menu();
        foreach ($main_menu as $menu) { //var_dump( $menu); exit; ?>
        <div class="menu-item contact">
        <a class="menu-link" href="<?php echo  $menu->url; ?>">
        <?php echo  $menu->title; ?>
        </a>
        </div>
<?php } ?>
</div>
现在,您的菜单已在标题中设置,当您单击指向其他页面的其中一个链接时,链接结构将按您所希望的方式显示。

SO网友:Johansson

正如@Milo在回答中提到的,您不能也不应该直接调用模板文件。这是一种安全风险,您将无法再访问WordPress的引擎,因此无法使用以下功能the_permalink.

将模板部件包括在home.php 或者任何你想要的地方,你可以使用get_template_part():

get_template_part( \'relative/path/to/template\' );
不包括.php. 它将自动添加。所以,如果你的about.php 在里面/theme/my-theme/folder/, 还有你的home.php 在中/theme/my-theme/, 应按以下方式使用此功能:

get_template_part( \'folder/about\' );
这将包括about.php 无论您在哪里使用代码。现在您可以在about.php 而且不需要任何难看的URL。

更新要添加页面,请创建一个名为page-whatever.php. 然后将以下内容添加到其标题:

<?php 
/**
 * This is the template for Pages
 *
 * @package YourPackage
 */

get_header();

get_template_part(\'path/to/portfolio\');
现在,在添加页面时(在页面模板下拉菜单下),您可以在后端看到新的页面模板。

SO网友:Milo

主题PHP文件从不直接链接或加载。您可以通过管理界面创建页面,其内容保存在数据库中,WordPress会根据请求类型(主页、存档、单篇文章、单页等)将传入的请求映射到相应的主题文件。。看看Template Hierarchy 有关每种类型的请求使用哪些主题文件的详细信息。

发行index.php 在permalinks中出现是单独的。您通常需要一个具有mod_rewrite 已启用完整的“漂亮”永久链接。现在,您已经拥有了所谓的PATHINFO,或“几乎漂亮”的永久链接。通读Using Permalinks 第页了解有关每项要求的更多信息。

SO网友:KazeZlat

如果您想要的是使用不同的模板//site.com/contact/ 然后您需要创建一个页面,将此永久链接设置为该页面,并创建名为page-contact.php.

这就是WP的工作原理:

搜索特定模板(例如page-contact.php)

搜索通用模板(例如。page.php, single.php 等等)

使用index.php

因此,如果它找不到第一个,则转到第二个,然后下降到index.php. 看看吧how WP template hierarchy built

结束

相关推荐

Post with Custom Permalinks

我的永久链接设置如下:http://myblog.com/%category%/%postname%/一切正常。但我正在寻找一种方法,只为一些帖子(10-11篇帖子)设置如下永久链接。http://myblog.com/%postname%/我之所以要这样做,是因为我正在合并两个WordPress网站,我不想失去另一个网站的帖子,这些帖子已经以旧的permalink结构发布在Facebook等网站上。