在Wordpress中分离内容与设计

时间:2015-04-06 12:16:42

标签: wordpress templates

我不是一个经验丰富的Wordpress人,但我一般都知道自己在做什么,并且多年来一直在编程。

我正在构建一个相当简单的Wordpress网站,但客户将来会添加很多帖子。

我突然意识到我的所有帖子都是静态的,因此如果需要更改设计,则需要在多个页面上手动应用。

我搜索了Google,但无济于事。我需要的是一个插件或方法,允许我为我的帖子添加模板,每个页面的唯一内容都添加到其中。然后,如果需要进行设计更改,我只需编辑模板,使用此模板即可在所有页面上立即更改设计。

我发现了似乎提供帖子模板的插件,但他们似乎只是创建了一个带有预制设计的新帖子,但是无法对该设计进行更改在使用该模板的所有帖子中。也许我在这里错过了一些简单的东西,因为我不能成为唯一想要实现这一目标的WP作者?

我不是在谈论动态内容。即我不需要从API中提取天气或价格等不断更新的数据。内容是为每个页面手写的,但我想将其与设计分开,因此如果需要进行设计更改,则只能从某种帖子模板管理器进行一次,而不是每个页面单独进行。

实际上,我已经使用了简单的post-snippets插件,我意识到我可以使用这个或类似的东西来实现我的目标,但我不认为这将是非常用户友好的对于非技术作者。相反,如果我在作者填写的每个帖子下面都有一组自定义字段,然后从那里获取内容并将其插入页面模板中,那将是理想的。

2 个答案:

答案 0 :(得分:0)

原则上,您应该能够使用CSS选择器更改设计。当然,这可能有其局限性,但从来没有一种适合所有人的设计。

对于更大的更改,您需要更改WordPress模板。

答案 1 :(得分:0)

好的,经过一些研究和探索,这就是我想出来的。

安装“高级自定义字段”和“自定义帖子模板”插件,但两者都不是必需的。

创建一组自定义字段,为每个帖子定义唯一数据(网址,媒体选择器等)。

最重要的是,按照“自定义帖子模板”插件的说明创建一个新的自定义帖子模板。在此模板中,删除输出发布内容的行(the_content()),并将其替换为输出所有短代码或此页面类型的任何内容的代码,并将占位符字符串替换为该帖子的自定义变量的值。然后(在我的例子中)我做了类似do_shortcode($ page_template)的操作来正确输出该页面的正确内容。

我创建了一个新帖子,内容字段完全为空,并根据需要填写自定义字段的值。此外,您必须选择帖子模板,以便它与您创建的新自定义模板匹配。

$v=get_post_custom_values("image_url")[0];//gets the id of the post which contains the image

$image_url = wp_get_attachment_image_src($v, 'medium')[0]; //get the image (URL?) from the reference

$page_template='[one_third last="no" spacing="yes" background_color="" background_image="" background_repeat="no-repeat" background_position="left top" border_size="2px" border_color="#eaeaea" border_style="solid" padding="20px" class="" id=""][imageframe lightbox="no" style_type="none" bordercolor="" bordersize="0px" borderradius="0" stylecolor="" align="none" link="" linktarget="_self" animation_type="0" animation_direction="down" animation_speed="0.1" class="" id=""] <img src="#image_url#" alt="" />[/imageframe][fusion_text]<a href="mailto:#personal_email#">Email Me</a> | <a href="#personal_website_url#" target="_blank">Website</a>[/fusion_text][/one_third][two_third last="yes" spacing="yes" background_color="" background_image="" background_repeat="no-repeat" background_position="left top" border_size="0px" border_color="" border_style="" padding="" class="" id=""][fusion_text]#main_text_html#[/fusion_text][/two_third]';

$page_template=str_replace ( "#image_url#" , $image_url , $page_template );
echo do_shortcode($page_template);

上面的代码包含硬编码到$ page_template变量中的页面模板,但也可以通过引用充当模板的帖子的id来加载它。

此代码目前仅插入正确的图片网址。一旦完成,它还将插入个人电子邮件链接,网站链接和主要文本。