wordpress 文章形式实现

文章形式的实现结构

首先说明一下,此文是一片技术文,你首先具备一定的html基础和一些wordpress主题结构和原理或者你之前自己写过、修改主题或许才能看懂此文。
也许很多同学见过有些同学的博客温养形式有很多,比如,说说、音乐、视频、引用、链接等样,是不是很羡慕。
其实原理很简单,首先要在主题函数中声明有哪些文章样式
诸如我声明了有说说、音乐、视频、引用、链接。则在fuctions.php中添加声明函数

<code><?php
// 添加文章样式
add_theme_support( 'post-formats', array( 'status', 'image', 'quote','audio') );
?></code>

在首页文章输出的大循环中增加一个判断函数,其判断大概是“如果文章形式是‘音频’则输出一下格式,若果是‘相册’,则输出一下格式。大概判断方法为。

<code>
<?php  //声明文章判断
$post_format = function_exists('get_post_format'); // WP3.0 compatibility
    $format = get_post_format();
//判断文章样式是不是 状态、引用、相册、音频,若果都不是则为标准形式
    if(!$post_format || !in_array($format, array('status','quote', 'image','audio'))) {//标准形式
?>

<?php 
    } else if($format == 'status') {//状态形式
?>


<?php
    } else if($format == 'quote') { //引用形式
?>

<?php
    } else if($format == 'image') {//相册形式
?>

<?php
    } else if($format == 'audio') {//音乐形式
?>

<?php //结束
    }
?>
</code>

那么把相应的div,css写入对应的地方。

文章形式部分功能实现

以下我针对不同形式的文章,简要说明实现部分功能的原理。

1.对于正常形式即标准形式的文章主要是输出函数

<code><?php the_content(__('全文阅读 ','yefengs').' »'); ?></code>

来实现的。
2.对于状态形式的主页也是输出函数

<code><?php the_content(__('全文阅读 ','yefengs').' »'); ?></code>

实现,是外形,样式不同罢了。
3.对于引用形式的输出,主要寻找文章中blockquote标签包裹的内容并输出。
其可以用以下函数代替the_content来输出

<code>
<?php //定义函数
        $matches = array();
        if(preg_match('/<cite(?:>|[^>]+>)((?!<\/cite>)[\w\W]*)<\/cite>/i',  $post->post_content, $matches)) {
            $source = $matches[1];
        } else if($post->post_title) {
            $source = $post->post_title;
        } else {
            $source = null;
        }
        $quote_type = $quote = null;
        $matches = array();
        if(preg_match('/<(blockquote|q)(?:>|[^>]+>)((?!<\/(?:blockquote|q)>)[\w\W]*)?<\/(?:blockquote|q)>/i',  $post->post_content, $matches)) {
            $quote_type = $matches[1];
            $quote = $matches[2];
        } else {
            $quote = $post->post_content;
            $quote_type = 'blockquote';
        }
        $quote = "<$quote_type><span class=\"quote-left\">“</span>" . trim($quote, '\u0022\u2018\u2019\u0027\u201c\u201d') . "<span class=\"quote-right\">”</span></$quote_type>";

?></code>

在所需位置直接用函数echo 显示出$quote的值,即用

<code><?php echo $quote; ?></code>

代替the_content函数,同时

<code><?php echo $source; ?></code>

表示标题。

如果还是判断是不是有标题,如果没有标题则直接输出$quote,则可以用诸如以下形式的格式输出

<code>
<?php if($source) //判断是不是有标题 成立输出标题 否则只输出$quote
{ ?>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="详细阅读<?php echo $source; ?>"><?php echo $source; ?></a></h2></div>
<?php } ?>
<a href="<?php the_permalink(); ?>"><?php echo $quote; ?></a>
</code>

4.相册形式的实现,一般只输文章中的第一张IMG标签的内容,通过以下函数来实现的

<code>
<?php //定义函数
        $match = array();
        $title = null;
        $source = filter_var(trim($post->post_content), FILTER_VALIDATE_URL);
        if(!$source && preg_match('/<img [^>]*src=[\"\']?([^\"\'\s]+)/i', $post->post_content, $match)) {
            $source = $match[1];
        }
        if($post->post_title) {
            $title = $post->post_title;
        }
?></code>

在相应的位置放上

<code>
<?php if($source) { ?>
<a href="<?php the_permalink(); ?>" class="cover"><img decoding="async" src="<?php echo $source; ?>"<?php if($title) { echo ' alt="' . $title . '" title="' . $title . '"'; } ?> /></a><?php }?>
</code>

其中以下函数是判断是否有标题,如果没有则不输出标题

<code>
<?php if($title) { ?><?php echo $title; ?><?php } ?></code>

5.对于有音频形式,主要是提取文章中的video|audio|object|embed|iframe标签,如果有,则输出这些标签所包裹的内容。

最后呢,对于文章形式主要还是靠的是DIV和CSS的控制,方法大同小异,视情况而定.

One thought on “wordpress 文章形式实现
添加一条新回复 回到顶部

亲爱的,主人已经关闭了这篇文章的评论 。