2014-08-27 68 views
0

我想在Wordpress CMS上构建一个页面网站。我正在寻找一种方法,通过id将我的页面挂在静态首页上,因为我有几种页面类型。通过静态主页上的id钩住页面

我已经试过:

$id=6; 
$post = get_post($id); 
$content = apply_filters('the_content', $post->post_content); 
echo $content; 

但这仅返回内容,而不是与HTML内容。有关如何实现此目的的任何提示?或者其他方式在Wordpress上构建一个单页网站?

在此先感谢

+0

您能粘贴一些您的代码与'echo $ content;'回显的示例内容吗? – ojrask 2014-08-27 13:05:31

回答

0

要输出HTML正确,请尝试使用PHP的HTML实体编码/解码相关功能实体转换回其适用的字符(如<>)。

WordPress有一个内部函数wpautop,它将双重换行符(\n)转换为段落分割。 wp_texturize(或其他类似名称)将某些字符转换为适当的变体,例如引号和类似名称。

试试这个:

$content = apply_filters('the_content', wpautop(wp_texturize(html_entity_decode($post -> post_content)))); 

// Note: not properly tested, but should probably output properly "HTMLized" contents. 

如果你想输出的东西比这是帖子内容中的HTML标记其他(和使用可湿性粉剂管理员帖子编辑器插入),你必须要继续与主题模板。

编辑:

要插入整个模板到首页,创建一个单页的网站,你需要创建的每个“页”为模板文件。假设您有front-page.phpcontent-about.phpcontent-portfolio.php等等。另外你最有可能有header.phpfooter.php

在简化形式,每一个将被插入到front-end.php可能看起来像这样的内容模板:

<?php 

/** 
* content-about.php 
*/ 

// Get the wanted content as WP Post. 
$page_obj = get_page_by_title('About'); 
$page_content = wpautop($page_obj -> post_content); 

?> 

<article id="about"> <!-- Begin a new section for the one-page template. --> 
    <h2><?php echo $page_obj -> post_title; ?></h2> 
    <?php echo $page_content; ?> 
</article> 

其他模板(content-portfolio.phpcontent-contact.php等)应遵循类似的结构。

然后在front-page.php中,您需要包含您的header.phpfooter.php,正如您通常那样。然后,插图中使用get_template_part调用来获取和内front-page.php显示content-abc.php模板:

<?php 

/** 
* front-page.php 
*/ 

get_header(); ?> 

<!-- Add some markup if you want to. --> 

<?php get_template_part('content', 'about'); // 'content-about.php' ?> 
<?php get_template_part('content', 'portfolio'); // 'content-portfolio.php' ?> 
<?php get_template_part('awesometemplate'); // 'awesometemplate.php' ?> 

<!-- Add some markup if you want to. --> 

<?php get_footer(); 

现在,经过WordPress和PHP解析front-page.php模板,生成的输出可能是这样(取决于你插入到每个东西包括模板) :

<!DOCTYPE html> 

<html> 

<head> 
... 
</head> 

<body> 

    <!-- header.php visible contents here --> 

    <!-- content-about.php: --> 
    <article id="about"> 
     <h2>About</h2> 
     <p>Well hello there! This is some <em>nice</em> content from content-about.php.</p> 
    </article> 

    <!-- content-portfolio.php: --> 
    <article id="portfolio"> 
     <h2>Portfolio</h2> 
     <ul> 
      <li> 
      ... 
      </li> 
     </ul> 
    </article> 

    <!-- awesometemplate.php: --> 
    <article id="awesome"> 
     <h2>Awesome!</h2> 
     <table> 
     ... 
     </table> 
    </article> 

    <!-- footer.php visible contents here --> 

</body> 

</html> 

持有的内容和现在你已经走散了模板嵌入front-page.php创建一个单页的主模板。如果你愿意的话,你可以使用CSS和JS来使它变得华丽。

注意:您也可以使用PHP自己的includerequire函数将子模板插入front-page.php

+0

与主题模板一起工作意味着什么?我认为这是我所需要的,因为我开发了所有的模板,但我需要一种方法将它们放在一个页面中。 – luukgruijs 2014-08-27 13:12:52

+0

您是否想要将WP'single.php'模板“嵌入”到静态主页中? – ojrask 2014-08-27 13:19:57

+0

不,我正在制作一个单页的WordPress网站。对于每个部分我有不同的模板,因为他们有不同的布局。例如,我有一个homepage.php,一个textpage.php和一个portfolio.php。我想在front-page.php中包含创建的页面,以便它们显示为单页网站 – luukgruijs 2014-08-27 13:23:46

0

您还可以使用WP_Query来构建自定义查询。您可以使用“发布”和“页面”参数调用您需要在首页上显示的页面。

在循环内部,您可以直接使用模板标签,如the_content。您还可以使用is_page()is_page_template()is_page_template()

以编解码器为例,在每页基础上有条件地在循环内加载模板标记和HTML结构。修改以满足您的需求

$the_query = new WP_Query(array('post_type' => 'post', 'post__not_in' => array(2, 5, 12, 14, 20))); 

// The Query 
$the_query = new WP_Query($args); 

// The Loop 
if ($the_query->have_posts()) { 
while ($the_query->have_posts()) { 
$the_query->the_post(); 
    the_content(); 
} 
} else { 
    // no posts found 
} 
/* Restore original Post Data */ 
wp_reset_postdata();