gpt4 book ai didi

widget - 最近的帖子 wordpress 小部件,文本有限,链接为 'read more'

转载 作者:行者123 更新时间:2023-12-02 03:51:44 26 4
gpt4 key购买 nike

我正在创建一个 Wordpress Recent Posts 小部件用于练习。但是我遇到了一些我不知道该怎么做的事情。首先,小部件必须显示帖子的日期和时间、帖子标题、具有智能截断字符限制的文本和阅读更多链接。它还必须允许管理员指定标题、类别、要显示的帖子数、要在帖子上显示的字符数,最后更改“阅读更多”链接的措辞。

我已经创建了这个小部件并弄清楚了如何做所有的事情,除了让类别选择成为一个下拉选择,其中已经有类别(现在它只是管理员的一个文本 block ,你可以在哪个类别中输入显示),如何限制 the_excerpt 中的字符,同时使其在单词末尾巧妙地截断并允许管理员指定如何允许我的字符,以及如何创建阅读更多链接同时允许管理员指定它所说的内容。

我将在下面发布目前为止的代码以及指向包含该小部件的站点的链接。我是 Wordpress Widget 设计的新手,因此非常感谢您的帮助。

<?php
/*
Plugin Name: News Recent Posts Widget
Plugin URI:
Description: A recent post widget with extra functions for client management
Author: Kevin Ullyott
Version: 1.0
Author URI: http://modmacro.com/
*/


class recentpost extends WP_Widget {

public function __construct() {
parent::WP_Widget(
// or parent::__construct(
false,
'Kevin - Recent Posts Widget',
array(
'description' => __('A recent post widget with extra functions for client management')

)
);
;
}

public function widget( $args, $instance ) {


extract( $args );

$headline = $instance['headline'];
$category = $instance['category'];
$numberposts = $instance['numberposts'];
$readmore = $instance['readmore'];


echo $before_widget;

echo $before_title;

echo "<p class=\"headline\">$headline</p>";

echo $after_title;

$args = array( 'numberposts' => $numberposts, 'category_name' => $category );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
setup_postdata(get_post($recent['ID']));
echo '<a href="' . get_permalink() . '" title=" '.esc_attr(get_the_title()).'" >' . get_the_title().'</a> ';
echo get_the_time('F j, Y', $recent['ID']);
the_excerpt();
}
wp_reset_postdata();


echo $after_widget;


}

public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['headline'] = ( $new_instance['headline'] );
$instance['category'] = ( $new_instance['category'] );
$instance['numberposts'] = ( $new_instance['numberposts'] );
$instance['readmore'] = ( $new_instance['readmore'] );
return $instance;
}


public function form( $instance ) {

$headline = $instance[ 'headline' ];
$category = $instance[ 'category' ];
$numberposts = $instance[ 'numberposts' ];
$readmore = $instance[ 'readmore' ];

?>

<p>
<label for="<?php echo $this->get_field_id( 'headline' ); ?>">
<?php _e( 'Headline:' ); ?>
</label>
<input class="widefat" id="<?php echo $this->get_field_id( 'headline' ); ?>" name="<?php echo $this->get_field_name( 'headline' ); ?>" type="text" value="<?php echo esc_attr( $headline ); ?>" />
</p>
<label for="<?php echo $this->get_field_id( 'category' ); ?>">
<?php _e( 'Category:' ); ?>
</label>
<input class="widefat" id="<?php echo $this->get_field_id( 'category' ); ?>" name="<?php echo $this->get_field_name( 'category' ); ?>" type="text" value="<?php echo esc_attr( $category ); ?>" />
</p>
<label for="<?php echo $this->get_field_id( 'numberposts' ); ?>">
<?php _e( 'Number of posts:' ); ?>
</label>
<input class="widefat" id="<?php echo $this->get_field_id( 'numberposts' ); ?>" name="<?php echo $this->get_field_name( 'numberposts' ); ?>" type="text" value="<?php echo esc_attr( $numberposts ); ?>" />
</p>
<label for="<?php echo $this->get_field_id( 'readmore' ); ?>">
<?php _e( 'Read More:' ); ?>
</label>
<input class="widefat" id="<?php echo $this->get_field_id( 'readmore' ); ?>" name="<?php echo $this->get_field_name( 'readmore' ); ?>" type="text" value="<?php echo esc_attr( $readmore ); ?>" />
</p>
<?php
}
}

add_action( 'widgets_init', create_function('', 'return register_widget("recentpost");') );


?>

http://www.modmacro.us/wpsandbox/

最佳答案

这个问题很多。我认为你把它作为练习来解决是很好的。我就是这样学习的。我可以在几个部分提供帮助。

类别

在表单函数中,首先您需要使用 WordPress 的 get_categories 获取所有类别的列表功能。

$categories = get_categories(array('type'=>'post','orderby'=> 'name','order'=> 'ASC'));

然后,要在表单中显示下拉菜单,您可以使用 for 循环遍历每个类别。

echo '<select name="' . $this->get_field_name('category') . '" id="' . $this->get_field_id('category') . '">';
foreach($categories as $category):
echo ' <option value="' . $category->slug .'" '. selected($category->slug, $instance['category'], false) . '>' . $category->name . '</option>';
endforeach;
echo '</select>';

显示帖子日期/时间等

我认为最好使用 WP_Query 类,它更灵活并且最近似乎是首选路线。在您的小部件功能中,它看起来像这样

$args = array( 'numberposts' => $numberposts, 'category_name' => $category );

$myquery = new WP_Query($args);

while($myquery->have_posts()): $myquery->the_post();

echo '<a href="' . get_permalink() . '" title=" '.esc_attr(get_the_title()).'" >' . get_the_title().'</a> ';
echo get_the_time('F j, Y', $myquery->ID);
the_excerpt();

endwhile;
wp_reset_query();
wp_reset_postdata();

限制摘录

然而,这将适用于您主题中所有摘录的使用。

function new_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');

关于widget - 最近的帖子 wordpress 小部件,文本有限,链接为 'read more',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com