一个页面上的多个页面具有不同的HTML

时间:2013-05-21 作者:James

我对如何实现这一目标有点困惑。我有一个网站,我已经用静态HTML/CSS编码过了,我正在尝试将其整合到wordpress中。然而,挑战在于该网站是单页索引。包含4个“节”的html文件。我希望每个部分都是一个任何人都可以访问的页面,以便在以后编辑内容。我已经找到了如何让页面通过其他stackoverflow资源循环出我的四个页面,然而我面临的挑战是HTML标记。

有没有一种方法可以让每个部分针对给定的部分循环出不同的HTML?每个部分的格式都不同。

例如,第一节可能有4个div,而第三节有一个div,它是一个不同的ID。当前循环只会循环出相同类型的HTML。

我读过一些关于我计划为节的特定部分合并的自定义字段的内容,但从更广的范围来看,我无法首先找出如何为每个节获取不同的HTML标记。

<?php $pages = get_pages();
  foreach ($pages as $page_data) {
  $content = apply_filters(\'the_content\', $page_data->post_content);
  $title = $page_data->post_title;
$slug = $page_data->post_name;

echo "<div id=\'$slug\'>";
echo "<h2>$title</h2>";
echo $content;
echo "</div>";
}
?>

2 个回复
最合适的回答,由SO网友:Fernando Silva 整理而成

你可以攻击get_pages(); 函数的另一种方法可以更好地对代码进行排序并更好地阅读,请看this link 了解更多信息。

<?php $args = array(
    \'sort_order\' => \'ASC\',
    \'sort_column\' => \'post_title\', // sorting by alphabetical order of post title for example
    \'hierarchical\' => 1,
    \'exclude\' => \'\',
    \'include\' => \'\',    // edit this parameter instead of $pages = get_pages(\'include=2,4,5,8\');
    \'meta_key\' => \'\',
    \'meta_value\' => \'\',
    \'authors\' => \'\',
    \'child_of\' => 0,
    \'parent\' => -1,
    \'exclude_tree\' => \'\',
    \'number\' => \'\',
    \'offset\' => 0,
    \'post_type\' => \'page\',
    \'post_status\' => \'publish\'
); //edit whatever parameter you need to get what you need (sort_column to select which column to sort by), this list shows all parameters!!!

$pages = get_pages($args); 

    foreach ($pages as $page_data) {
        $content = apply_filters(\'the_content\', $page_data->post_content);
        $title = $page_data->post_title;
        $slug = $page_data->post_name;

        if( $page_data->ID == 2 ){ //format 1
            get_template_part( \'content-1\', get_post_format() ); //get post template from content-1.php
            }
        elseif( $page_data->ID == 4 ){ //format 2
            get_template_part( \'content-2\', get_post_format() ); //get post template from content-2.php
            }

        }
?>
我对if 语句如果显示每个部分的代码太大,您可以简单地将其分解为其他文件以轻松地控制它并使其更具可读性。有关的更多用法get_template_part(); 功能参考this link.

SO网友:webdwall

您可以使用条件if-else语句,根据页面id为不同的页面输出不同的html。但首先修改get\\u页面,仅获取这4个页面(或您所称的“节”)。当前代码将显示网站上的所有页面。我很肯定你不想那样。所以

$pages = get_pages();
你应该这样做

$pages = get_pages(\'include=2,4,5,8\');
其中2、4等。。是所需页面的id。然后,您可以修改代码以检查页面id并相应地输出html

if( $page_data->ID == 2 ){
//format 1
echo "<div id=\'$slug\'>";
echo "<h2>$title</h2>";
echo $content;
echo "</div>";
}
elseif( $page_data->ID == 2 ){
//format 2
echo "<div id=\'page-". $page_data->ID ."\'>";
echo "<div class=\'page-title\'>$title</h2>";
echo $content;
echo "</div>";
}
//... and so on

结束