如何在wordpress自定义链接中编辑自定义页面

WordPress 添加自定义页面模板文件 - 推酷
WordPress 添加自定义页面模板文件
主题的页面模板
我们在编写 WordPress 模板的时候,对于【页面】类型的 post_type,可以用 page-{page_slug}.php 这样的方式来编写页面模板文件。
也就是说,如果我们在后台创建了一个别名为 about 的页面,然后我们又在模板文件夹里面创建了一个 page-about.php ,那么这个页面就将自动使用这个页面进行渲染。
具体的模板层级路由规则参见这篇文档的 Page 一节:
其中,对于用哪个模板来渲染页面,最优先的规则是这条:
custom template file – The page template assigned to the page. See get_page_templates().
后面才是上面说的 page-{slug}.php 的规则。
那么这个反映到后台的模板的话,就是这个样子,在页面的编辑块“页面属性”里面,可以指定页面的模板:
注意,这个规则是最优先的。
那么,问题来了,怎么我这里的后台没得选的啊?
这个是要我们自己添加的。
创建自定义的页面模板
找啊找啊,找了很久才找到这篇文档,真不简单。
简要说一下,如果要创建一些通用的可供选择的页面模板,那么需要在模板文件里面添加 page_{template-name}.php 这样的文件:
注意前缀 page 后面必须跟的是下划线而不是横杠,这个是关键。
然后,到后台看一下,还是没有?!
再往下看,需要在这个模板文件前面加上注释,以表明这个页面模板的名称,下拉框中显示的就是这里的内容:
&?php /* Template Name: 牛逼的页面模板 */ ?&
ok,这下从后台的页面编辑页面就可以看得到这个模板的选项了!大家来搞吧!
有时候我们开发网站的时候,设计上可能会有一小群风格一致的页面,但是内容有不一致,我们如果分别对其编写页面模板文件,会有很大量的代码冗余,这个时候我们就可以创建这样一个模板类型,然后从后台数据库将其绑定,这样就可以让一个页面模板为动态指定的一些页面提供渲染。
另外,这个配置的字段是放在这个页面的 post_meta 里面的,关键字是: _wp_page_template 。
【转载请附】愿以此功德,回向 &&
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致& 正文内容
WordPress添加自定义字段栏目面板
wordpress博客的自定义栏目使用非常泛,没有使用过自定义栏目的博友可以看看《》。主题制作中往往会使用WP自定义字段实现一些功能,特别是在wordpress淘宝客模板中的使用,产品的价格、链接都可以通过自定义栏目使用。默认的自定义字段使用方法是下拉菜单形式,对于经常使用的字段,每次都要下拉选择显然非常不方便,因此给WP主题添加自定义栏目面板显得非常有必要。下面通过在主题的functions.php文件中添加代码实现该功能。
一、创建需要的字段信息:
以添加description_value和keywords_value两个字段为例,先定义数组:
$new_meta_boxes =
array(
&description& =& array(
&name& =& &description&,
&std& =& &这里填默认的网页描述&,
&title& =& &网页描述:&),
&keywords& =& array(
&name& =& &keywords&,
&std& =& &这里填默认的网页关键字&,
&title& =& &关键字:&)
二、创建自定义字段输入框
以下代码将用于创建自定义域以及输入框:
function new_meta_boxes() {
global $post, $new_meta_boxes;
foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post-&ID, $meta_box['name'].'_value', true);
if($meta_box_value == &&)
$meta_box_value = $meta_box['std'];
// 自定义字段标题
echo'&h4&'.$meta_box['title'].'&/h4&';
// 自定义字段输入框
echo '&textarea cols=&60& rows=&3& name=&'.$meta_box['name'].'_value&&'.$meta_box_value.'&/textarea&&br /&';
echo '&input type=&hidden& name=&newmetaboxes_noncename& id=&newmetaboxes_noncename& value=&'.wp_create_nonce( plugin_basename(__FILE__) ).'& /&';
三、创建自定义字段模块
下面代码将在文章编辑页添加自定义字段模块,这其中这用了WordPress的添加模块函数add_meta_box:
function create_meta_box() {
global $theme_name;
if ( function_exists('add_meta_box') ) {
add_meta_box( 'new-meta-boxes', '自定义模块', 'new_meta_boxes', 'post', 'normal', 'high' );
四、保存文章数据
function save_postdata( $post_id ) {
global $new_meta_boxes;
if ( !wp_verify_nonce( $_POST['newmetaboxes_noncename'], plugin_basename(__FILE__) ))
if ( !current_user_can( 'edit_posts', $post_id ))
foreach($new_meta_boxes as $meta_box) {
$data = $_POST[$meta_box['name'].'_value'];
if(get_post_meta($post_id, $meta_box['name'].'_value') == &&)
add_post_meta($post_id, $meta_box['name'].'_value', $data, true);
elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true))
update_post_meta($post_id, $meta_box['name'].'_value', $data);
elseif($data == &&)
delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
五、将函数连接到指定action(动作)
将函数连接到指定action(动作),以让WordPress程序执行我们之前编写的函数:
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata');
最后在主题模板中添加创建的自定义字段即可
六、调用自定义字段的值
示例:调用前面创建的“网页描述”
&?php $description = get_post_custom_values(&description_value&); echo $description[0];?&
相关推荐:如何在WordPress中自定义PHP页面并操作数据库? - 推酷
如何在WordPress中自定义PHP页面并操作数据库?
在我搭建自己博客的时候有这样一个需求,想搞一个类似于首页的样式,可是数据源又不是来自于wordpress中的文章,而是另外自定义创建的数据表中的数据,wordpress本身的页面模板好像不能满足我这么做了,于是开始搜罗网上的各种资料,DIY一个自定义的PHP页面。要完成这样一个可以通过URL正常访问的页面,主要有以下工作要做:
1. 尝试设置一个页面模板
1)拷贝一个index.php并改名为其它名,如list.php;
2)在list.php页面最顶部添加
Template Name: 友链
以上两步就可以创建一个页面模板了,修改并保存好这个文件后,创建一个新页面或者修改已存在的页面。在右下边有个“页面模板”的面板,在下拉菜单中选中“友链”后保存就可以了。
然后在页面中添加任何内容,包括html代码就可以显示了。可是我的需求是要自己完成PHP代码获取数据并展示,它不能这么做。
2. 调用 WordPress 的 API实现URL正确跳转
这种方法的自由度较高,并且可以创建非WordPress格式的URL。比如我们要把 /list 转交给主题文件夹下的 /custom/list.php 来处理,就可以用这种方式来处理。这种方法用到 template redirect 钩子,template redirect 是 WordPress 在预处理好所有参数设置之后决定调用主题模板的时候调用的。
在functions.php模板函数文件中添加以下实例代码:
function loadCustomTemplate($template) {
global $wp_query;
if(!file_exists($template))return;
$wp_query-&is_page = true;
$wp_query-&is_single = false;
$wp_query-&is_home = false;
$wp_query-&comments = false;
if ($wp_query-&is_404) {
unset($wp_query-&query[&error&]);
$wp_query-&query_vars[&error&]=&&;
$wp_query-&is_404=false;
header(&HTTP/1.1 200 OK&);
include($template);
function templateRedirect() {
$basename = basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
loadCustomTemplate(TEMPLATEPATH.'/custom/'.&/$basename.php&);
add_action('template_redirect', 'templateRedirect');
这样就实现了 WordPress 查找 /custom 文件夹下的 php 文件,并且将相匹配的 URL 请求转交给对应的 php 文件来处理的效果,与此同时,这个 php 文件还保持了对 WordPress API 的调用,因此留给我们的空间非常大。
接下来就可以在 /custom 文件夹下自定义一个list.php文件然后通过链接/list访问。
3. 添加页面内容,获取自定义数据库/表中的内容
然后就可以根据需要自己需要来实现自己想要的功能,这里需要有以下几点要处理:
1)如何操作数据库
WordPress提供了一个全局变量$wpdb,并将其实例化为wpdb类的对象。这样我们就可以直接使用$wpdb来调用所有的数据库操作函数。通过这个$wpdb对象,我们可以对WordPress数据库进行任何操作,包括建表、查询、删除、更新等。使用$wpdb-&get_results实现执行sql语句操作数据库,并获取结果。
$sql= &SELECT * FROM &.$wpdb-&prefix.
$a = $wpdb-&get_results($sql);
2)使用wordpress的样式
通过F12查看首页代码就可以发现只要使用对应的class样式就能轻松让页面统一规整。那么就把对应的html添加到自定义PHP页面中即可。
3)利用wordpress的规则轻松实现翻页
wordpress已经默认支持翻页,格式如:/list?page=$1,只要在自定义的页面里面定义好每页返回正确的内容就好啦。
4. 设置nginx rewrite规则
可读性强的URL一定不能是/list?page=2这样的格式,对爬虫也不友好,那就需要配置好rewrite规则,我使用的是nginx的配置为:
rewrite ^(.*)/indexed/page/([0-9]+)$ $1/indexed?page=$2
到现在为止,离成功只有一步之遥了,那就是新建一个页面,并把URL设置为/list即可!大功告成!求鲜花求点赞!^_^
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 wordpress 自定义栏目 的文章

 

随机推荐