wordpress网站如何自由选择文章默认形式

 火... [复制链接]  895查看
 楼主| 易西 发表于 2023-7-26 22:02:12 | 显示全部楼层
 楼主| 易西 发表于 2023-7-26 22:05:54 | 显示全部楼层
https://www.xxzhuti.com/498.html
参考
若您的wordpress主题支持这种形式,那么在WordPress发布文章按钮侧栏发布文章的时候可以选择视频格式,图片格式,文字格式等等。之所以有这些文章格式,只是为了美观,或者使文章看起来更得体一点。可惜的一点是wordpress提供的这几种形式是固定的,不能自己定义添加。

                               
登录/注册后可看大图
wordpress主题添加文章格式
如果你的主题不支持文章格式,首先你需要在functions.php中添加如下类似代码让你的主题支持该功能,WordPress支持以下十个文章格式:
1、Standard:只是一个普通的文章没有什么特别的东西。
2、Aside:类似于一个facebook的更新。
3、Link:链接到外部网站。
4、Image:只是一个简单的图像,没有什么巨大的。
5、Quote:引用。
6、Status:一个简短的状态更新,类似于微博。
7、Video:一个视频。
8、Audio:音频文件。
9、Chat:全文聊天或使用插件一个客舱。
在function.php中添加如下代码
  • add_theme_support( 'post-formats', array( 'aside', 'chat','gallery','image','link', 'quote', 'status', 'video', 'audio' ) );
在页面和自定义文章页面添加
  • //add post-formats to post_type 'page'
  • add_post_type_support( 'page', 'post-formats' );
  • // add post-formats to post_type 'my_custom_post_type'
  • add_post_type_support( 'my_custom_post_type', 'post-formats' );
文章形式的使用
添加下面的代码到你的single.php中:
  • <?php get_template_part( 'content', get_post_format() ); ?>
然后在你的主题中创建php文件,文件的命名为content-{post-format}.php,例如:content-video.php and content-audio.php
最后需要创建一个content.php文件,这个文件的作用是找不到定义的文件时找此文件,也就是说这是个默认文件。
自定义文章形式
也可以使用自定义文章的形式,不过还是只能选那十项,在主题中创建好single-video.php文件,在function.php加入以下代码,发表文章的时候选择视频,试试看看效果吧
  • add_action('template_include', 'load_single_template');
  • function load_single_template($template) {
  • $new_template = '';
  • // single post template
  • if( is_single() ) {
  • global $post;
  • // template for post with video format
  • if ( has_post_format( 'video' )) {
  • // use template file single-video.php for video format
  • $new_template = locate_template(array('single-video.php' ));
  • }
  • }
  • return ('' != $new_template) ? $new_template : $template;
  • }

 楼主| 易西 发表于 2023-7-26 22:39:50 | 显示全部楼层
https://www.npc.ink/6957.html
参考

有了文章形式,就为主题设定文章格式提供了一种的新方法(例如,add_theme_support('post-formats', array('aside'))),然后就可以在保存文章的时候在发布信息框里选择对应的文章格式。通过调用功能函数get_post_format( $post->ID )就能确定文章所属格式,而post_class()将会创建“format-asides”类,以用于纯 CSS 样式编辑。
使用方法
在主题的 functions.php 中添加下列代码,以添加形式;
  • add_theme_support( 'post-formats', array( 'aside', 'chat','gallery','image','link', 'quote', 'status', 'video', 'audio' ) );
在你的文章循环的位置,添加下列判断
  • <?php if( has_post_format( 'status' )) { //状态 ?>
  • 状态样式
  • <?php } else if ( has_post_format( 'aside' )) { //日志 ?>
  • 日志样式
  • <?php } else if ( has_post_format( 'gallery' )) { //相册 ?>
  • 相册样式
  • <?php } else if ( has_post_format( 'video' )) { //视频 ?>
  • 视频样式
  • <?php } else if ( has_post_format( 'audio' )) { //音乐 ?>
  • 音乐样式
  • <?php } else{ //标准 ?>
  • 常规样式
  • <?php } ?>
在你启用文章的形式后,会在这里进行一个文章形式的判断,你可以通过
  • <?php get_template_part( 'template-parts/content-main', get_post_type() );?>
来调用对应的模板文件,模板文件的调用顺序可参考

                               
登录/注册后可看大图

官方模板层次结构与加载顺序 - WordPress开发

                               
登录/注册后可看大图
Muze

  • 4 年前
  • 0
  • 269



例子
上面讲解了什么是文章形式、如何添加文章形和如何判断文章形式,下面就来了解下如何实现不同文章形式使用不同模板
在判断内添加文章循环的方法:
  • <?php while ( have_posts() ) : the_post(); ?>
  • <?php get_template_part( 'content', get_post_format() ); ?>
  • <?php endwhile; ?>
第一:举例,我们先添加视频音频文章形式,首先在functions.php添加下面代码
  • add_theme_support( 'post-formats', array( 'video','audio', ) );
第二:在index.php(或者需要用到文章形式的文件)中找到文章循环代码:
  • <?php while ( have_posts() ) : the_post(); ?>
  • 内容
  • <?php endwhile; ?>
替换成下面代码
  • <?php while ( have_posts() ) : the_post(); ?>
  • <?php get_template_part( 'content', get_post_format() ); ?>
  • <?php endwhile; ?>
第三:在主题目录创建
  • content.php(默认文章形式)
  • content-audio.php(音频形式)
  • content-video.php(视频形式)
如果添加了别的文章形式 就要创建 content-xxx(形式名称).php

                               
登录/注册后可看大图

Lifet - 单栏WordPress博客主题

                               
登录/注册后可看大图
Muze

  • 3 年前
  • 0
  • 602



支持的形式
目前支持以下文章格式:
  • 日志(aside) - 典型样式就是没有标题。类似于 Facebook 或人人网中更新的一条日志。
  • 相册(gallery) - 图像陈列厅。文章中通常会有“gallery”代码和相应的图像附件。
  • 链接(link) - 链接到其它网站的链接。主题可能会使用文章中的第一个 <a href=""> 标签作为文章的外部链接。有可能有的文章至包含一个 URL,那么这个 URL 将会被使用;同时,文章标题(post_title)将会是附加到它的锚的名称。
  • 图像(image) - 单张图像。文章中的首个 <img /> 标记将会被认为是该图片。另外,如果文章只包含一个 URL 链接,则被认为是该图片的 URL 地址,而文章标题(post_title)将会作为图片的标题属性。
  • 引语(quote) - 引用他人的一段话。通常使用 blockquote 来包裹引用内容。或者,可能直接将引语写入文章,并将其出处写在标题栏。
  • 状态(status) - 简短更新,通常最多 140 个字符。类似于微博 Twitter 状态消息。
  • 视频(video) - 单一视频。文章中第一个 <video /> 或 object 或 embed 将被作为视频处理。或者,文章可以仅包含视频的 URL,甚至一些主题和插件可以支持自动嵌入您的文章附件中的视频。
  • 音频(audio) - 一个音频文件。可以用于播客(podcasting)等。
  • 聊天(chat) - 聊天记录,类似于:
  • 张三: foo
  • 李四: bar
  • 张三: foo 2
注意:当编辑文章时,若没有指定文章样式,则默认使用“标准”。同样,若指定了一个无效的文章形式,那么也将默认使用标准样式。
参考函数
主题和插件可以使用函数 set_post_format() 来设置形式,使用 get_post_format() 来查询形式,使用 has_post_format() 来检查是否已经设置了某个形式。
添加主题支持
主题必须使用 add_theme_support() 函数,通过传递一个数组来告诉 WordPress 使用何种文章形式,例如:
  • add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );
然后在主题中使用 get_post_format() 函数以检查文章格式,并据此来修改格式。要注意的是使用默认格式的文章时,该函数返回值为FALSE。或者使用 条件判断标签函数 has_post_format()
  • if ( has_post_format( 'video' )) {
  •   echo 'this is the video format';
  • }
理解
怎么说呢,这个功能就是定义某一篇文章在列表中展现的形式,样式可以自己随便的DIY,以后发表文章时,可以选择发表的形式,可以只写一句话像微博一样,可以单独分享一个图片、视频或者音乐,而且因为展现形式区别于其他文章的形式,往往关注量也会高些。
注意:当编辑文章时,若没有指定文章样式,则默认使用“标准”。同样,若指定了一个无效的文章形式,那么也将默认使用标准样式。


0




WordPress开发WP开发

 楼主| 易西 发表于 2023-7-26 22:45:48 | 显示全部楼层
本帖最后由 易西 于 2023-7-26 22:47 编辑

https://www.xyhtml5.com/25603.html
参考

WordPress 自定义文章类型存储在 wp_psots 数据表中,开发人员可以注册自己的文章类型。本章节中,我们将讨论如何 注册自定义文章类型,如何从数据库中获取自定义文章类型内容,以及如何把这些内容显示给用户。

注册自定义文章类型
WordPress 默认有 5 种文章类型:post, page, attachment, revision, menu。我们开发插件时,可能需要创建z自定义文章类型,例如,电子商务网站中的 “产品”,在线学习网站中的 “作业”或者视频网站中的 “电影”。

我们可以使用 register_post_type() 函数来注册自定义文章类型,注册之后,WordPress 会自动帮我们添加一个新文章类型菜单到后台,我们可以通过这个菜单管理和创建文章。

建议在插件而不是主题中创建自定义文章类型,这样,如果我们更换了主题,文章类型还会存在。
以下示例将在数据库中创建名称为 “产品” 的自定义文章类型 “wporg_product”。

function wporg_custom_post_type() {
register_post_type( 'wporg_product',
[
'labels'      => [
'name'          => __( 'Products' ),
'singular_name' => __( 'Product' ),
],
'public'      => true,
'has_archive' => true,
]
);
}
add_action( 'init', 'wporg_custom_post_type' );
请参考 register_post_type() 的函数说明以查看所有参数。

我们必须在 admin_init 钩子之前,after_setup_theme 之后调用 register_post_type(),一个比较好的选择是 init 钩子。
命名最佳实践
在文章类型名称前面加一个主题或插件名称作为前缀是一个比较好的做法,这样可以避免与其他插件产生冲突,也可以让其他开发者了解该文章类型的来源。

为了确保向前兼容,请不要使用 wp_ 作为文章类型前缀,WordPress 核心使用了这个前缀。确保自定义文章类型名称不超过 20 个字符,因为在post_type数据库中,该列是长度为 20 的 VARCHAR 字段。如果我们使用的名称过于通用-例如:product。可能会与其他插件或主题冲突。
网址
如果我们需要为自定义文章类型设置一个别名,可以在 register_post_type() 的 rewrite 参数中添加一个 key => value 键值对。如下:

function wporg_custom_post_type() {
register_post_type( 'wporg_product',
[
'labels'      => [
'name'          => __( 'Products' ),
'singular_name' => __( 'Product' ),
],
'public'      => true,
'has_archive' => true,
'rewrite'     => [ 'slug' => 'products' ], // my custom slug
]
);
}
add_action( 'init', 'wporg_custom_post_type' );
使用上面代码创建的自定义文章类型的 URL 结构为:http://example.com/products/%product_name%

使用过于通用的别名可能会与其他主题或插件产生冲突。
与自定义文章类型标识符不同,我们可以通过更改其中一个冲突文章类型的 slug,轻松解决文章类型 slug 冲突的问题。如果插件作者足够聪明,可以在参数中使用 apply_filters() 创建一个自定义 Filter 钩子,然后其他开发者可以通过这个钩子重写 register_post_type() 的参数完成这个操作。我们没有办法在不禁用一个冲突的文章类型的前提下来解决文章类型标识符冲突的问题。
使用自定义文章类型
我们可以为自定义文章类型创建模版,也可以使用 single.php 和 archive.php 显示文章内容和存档,自定义文章类型模版的创建方法如下:

single- {post_type} .php – 用于自定义文章类型类型内容的模版
archive- {post_type} .php – 用于显示自定义文章类型文章列表的模版
其中 {post_type}是 register_post_type() 函数的 $post_type 参数。

例如,我们可以为“wporg_product” 文章类型创建 single-wporg_product.php 文章类型内容模版和 archive-wporg_product.php 存档模版。

或者,我们可以在任何模版文件中使用 is_post_type_archive() 函数来检查当前页面是否为指定文章类型存档页面,然后使用 post_type_archive_title() 函数来了显示自定义文章类型标题。

通过自定义文章类型参数查询文章
我们可以使用 post_type 参数通过 WP_Query 来查询指定文章类型的文章,如:

$args = [
'post_type'      => 'product',
'posts_per_page' => 10,
];
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) {
$loop->the_post();
?>
<div class=entry-content>
<?php the_title(); ?>
<?php the_content(); ?>
</div>
<?php
}
上面的查询获取最新 10 个产品文章,并逐个显示他们的标题和内容。

修改主查询
注册自定义文章类型并不会自动添加到主查询中,如果我们需要把自定义文章类型显示在默认存档上,或者包含在其他文章类型存档页面,我们可以使用 pre_get_posts Action 钩子修改主查询,把自定义文章类型参数添加到主查询上,如下:

function wporg_add_custom_post_types( $query ) {
if ( is_home() && $query->is_main_query() ) {
$query->set( 'post_type', [ 'post', 'page', 'movie' ] );
}
return $query;
}
add_action( 'pre_get_posts', 'wporg_add_custom_post_types' );
感兴趣的话,可以再看看这几篇文章:

WordPress插件开发教程 — 钩子(Hooks)
WordPress插件开发教程 — 自定义分类方法
WordPress插件开发教程 — 管理菜单
以上是WordPress插件开发教程 — 自定义文章类型的全部内容。
THE END

【来源:https://www.xyhtml5.com/25603.html,转载请注明】

 楼主| 易西 发表于 2023-7-26 22:49:55 | 显示全部楼层
本帖最后由 易西 于 2023-7-26 22:52 编辑

https://www.yii666.com/blog/423269.html
参考
这几天在搭建博客的时候,碰到了一个对我来说很棘手的问题。WordPress自带的文章类型只能使用他们特定的模版,而我由于想做一个心情时间轴的板块,所以只能自定义文章的类型,让他来支持我的这个模版。于是网上找资料,并且以插件的形式来表现,得到了如下的解决方案:文章地址https://www.yii666.com/blog/423269.html
主要就是使用了register_post_type 函数。来源地址:https://www.yii666.com/blog/423269.html
1、创建插件目录地址:https://www.yii666.com/blog/423269.html
新建一个文件夹用来存放插件文件,这里我就命名这个文件夹为myMood
2、创建PHP代码文件
在刚才创建的文件夹里面新建一个php文件,命名为myMood,用来书写插件代码
3、添加头部描述

复制代码
代码如下:

<?php
/*
Plugin Name: Movie Reviews
Plugin URI: http://wp.tutsplus.com/
Description: Declares a plugin that will create a new post type .
Version: 1.0
Author: Summer
Author URI: http://www.xtwind.com/
License: GPLv2
*/
?>


4、注册自定义函数
在刚刚创建的php文件代码中,在?>前面添加函数:

文章来源地址:https://www.yii666.com/blog/423269.html
复制代码
代码如下:

add_action( 'init', 'create_myMood' );

得到如下代码:

复制代码
代码如下:

<?php
/*
Plugin Name: Movie Reviews
Plugin URI: http://wp.tutsplus.com/
Description: Declares a plugin that will create a new post type .
Version: 1.0
Author: Summer
Author URI: http://www.xtwind.com/
License: GPLv2
*/
add_action( 'init', 'create_myMood' );
?>


5、添加函数功能
把下面这段代码添加到 add_action( 'init', 'create_myMood' ); 的前面

复制代码
代码如下:

function create_lsxq() {
register_post_type( 'lsxq',
array(
'labels' => array(
'name' => '零散心情',
'singular_name' => 'lsxq',
'add_new' => '写心情',
'add_new_item' => '添加一条新心情',
'edit' => 'Edit',
'edit_item' => 'Edit lsxq',
'new_item' => 'New lsxq',
'view' => 'View',
'view_item' => 'View lsxq',
'search_items' => 'Search lsxq',
'not_found' => 'No lsxq found',
'not_found_in_trash' => 'No lsxq found in Trash',
'parent' => 'Parent lsxq'
),
'public' => true,
'menu_position' => 15,
'supports' => array( 'title', 'editor', 'comments', 'thumbnail' ),
'taxonomies' => array( '' ),
'menu_icon' => plugins_url( 'images/image.png', __FILE__ ),
'has_archive' => true
)
);
}

对 register_post_type 这个函数发出声明,它就为新的文章类型做好了各种管理功能。这个函数包括两个参数:第一个是定义了自定义文章类型的名字 ;第二个是一个数组,用来定义新的自定义文章类型的属性。
第一个参数很简单,大家自己领悟。这里简单说下地位个参数:
'public' => true 决定该文章类型在管理后台和前端的可见性
'menu_position' => 5 决定该文章类型菜单的位置
'supports' => array( 'title', 'editor', 'comments', 'thumbnail') 决定自定义文章类型的功能
'taxonomies' => array( '' ) 创建自定义分类,这里没有定义。
'menu_icon' => plugins_url( 'image.png', __FILE__ ) 显示管理菜单的图标,图标文件放在和插件同一目录,为16*16像素
'has_archive' => true 启用自定义文章类型的存档功能
请访问 register_post_type 了解更多关于该函数的参数细节。文章来源地址https://www.yii666.com/blog/423269.html
6、创建一个该自定义文章类型的模版
打开刚刚的代码文件,在
复制代码
代码如下:

add_action( 'init', 'create_lsxq' );
语句前面添加下面这一语句:

复制代码
代码如下:

add_filter( 'template_include', 'include_template_function', 1 );

7、实现该函数的功能

复制代码
代码如下:

function include_template_function( $template_path ) {
if ( get_post_type() == 'lsxq' ) {
if ( is_single() ) {
if ( $theme_file = locate_template( array ( 'single-lsxq.php' ) ) ) {
$template_path = $theme_file;
} else {
$template_path = plugin_dir_path( __FILE__ ) . '/single-lsxq.php';
}
}
}
return $template_path;
}


该代码段添加在下面语句的后面

复制代码
代码如下:

add_filter( 'template_include', 'include_template_function', 1 );
8、创建单页面模版single-lsxq.php
创建一个名字为single-lsqx.php的文件,主要代码段如下:

复制代码
代码如下:

<?php
$mypost = array( 'post_type' => 'lsxq', );
$loop = new WP_Query( $mypost );
?>
<?php while ( $loop->have_posts() ) : $loop->the_post();?>
<div class="item">
<h3> <span class="fr"><?php the_time('Y-n-j H:i') ?></span> </h3>
<div class="con">
<?php the_content(); ?>
</div>
</div>
<?php endwhile; ?>


现在,我们已经通过循环创建了一个基本的页面模板。这个  函数检索自定义文章类型的元素,并在循环中使用它们。现在自定义文章类型差不多就好了,剩下的就是css样式了。
上述代码可点击此处本站下载
希望本文所述对大家基于wordpress的网站建设有所帮助。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

邮箱|首页|小黑屋|吾侪 ( 蜀ICP备2020029307号-4 )

GMT+8, 2025-12-2 00:56 , Processed in 0.059375 second(s), 17 queries , APCu On.

Powered by Discuz! X3.5

Copyright © , 吾侪网

快速回复 返回顶部 返回列表