17713433920 info@mac163.com

默认情况下,WordPress摘录设置为55个单词,并且有一个excerpt_length过滤器,可让您将该默认值更改为您选择的长度。但是,如果您希望站点的不同部分具有不同的摘录长度,该怎么办?例如,如果您要开发具有多种帖子类型的网站,则可能需要根据帖子类型显示不同的摘录长度。博客文章的摘录可能比例如投资组合项目的摘录更长。

如何在WordPress中添加多个自定义摘录长度
如何在WordPress中添加多个自定义摘录长度

自定义摘录功能

在下面,您将找到我们开发的自定义功能,可帮助您在WordPress主题中显示不同长度的摘录。要使用该函数,只需将其添加到您的functions.php文件中,然后就可以在整个主题中替换the_excerpt或the_content函数,以便您可以选择不同的摘录长度。

function wpex_get_excerpt( $args = array() ) {

	// Defaults
	$defaults = array(
		'post'            => '',
		'length'          => 40,
		'readmore'        => false,
		'readmore_text'   => esc_html__( 'read more', 'text-domain' ),
		'readmore_after'  => '',
		'custom_excerpts' => true,
		'disable_more'    => false,
	);

	// Apply filters
	$defaults = apply_filters( 'wpex_get_excerpt_defaults', $defaults );

	// Parse args
	$args = wp_parse_args( $args, $defaults );

	// Apply filters to args
	$args = apply_filters( 'wpex_get_excerpt_args', $defaults );

	// Extract
	extract( $args );

	// Get global post data
	if ( ! $post ) {
		global $post;
	}

	// Get post ID
	$post_id = $post->ID;

	// Check for custom excerpt
	if ( $custom_excerpts && has_excerpt( $post_id ) ) {
		$output = $post->post_excerpt;
	}

	// No custom excerpt...so lets generate one
	else {

		// Readmore link
		$readmore_link = '<a href="' . get_permalink( $post_id ) . '" class="readmore">' . $readmore_text . $readmore_after . '</a>';

		// Check for more tag and return content if it exists
		if ( ! $disable_more && strpos( $post->post_content, '<!--more-->' ) ) {
			$output = apply_filters( 'the_content', get_the_content( $readmore_text . $readmore_after ) );
		}

		// No more tag defined so generate excerpt using wp_trim_words
		else {

			// Generate excerpt
			$output = wp_trim_words( strip_shortcodes( $post->post_content ), $length );

			// Add readmore to excerpt if enabled
			if ( $readmore ) {

				$output .= apply_filters( 'wpex_readmore_link', $readmore_link );

			}

		}

	}

	// Apply filters and echo
	return apply_filters( 'wpex_get_excerpt', $output );

}

如何使用功能

因此,现在可以在循环中使用“ wpex_excerpt($ args)”,而不必在循环中使用“ the_excerpt()”,其中$ args包含特定摘录的首选设置数组。

例:

<?php echo wpex_get_excerpt ( $defaults = array(
	'length'          => 40,
	'readmore'        => true,
	'readmore_text'   => esc_html__( 'read more', 'wpex-boutique' ),
	'custom_excerpts' => true,
) ); ?>

功能过滤器

您可能会注意到,我们的代码片段包含各种apply_filters()函数。为什么?这样做的原因是,如果您正在开发高级或免费主题或用于分发的插件,则需要使最终用户能够根据需要通过其子主题更改其摘录。例如,如果您将摘录定义为网站某个部分的特定长度,则最终用户可以始终使用“ wpex_get_excerpt_args”过滤器将摘录更改为其他长度,或者自定义文本或阅读更多内容


微信二维码

微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!


需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部