利用数据库实现类似于随机引用的功能

时间:2014-11-11 作者:rents

I want to have functionality like this:A random quotes appears in particular section of the website (say sidebar) after a particular amount of time(say everyday).

I want to power it up using a new table in the database.

So maybe I will have these columns-

  • Quote_Text
  • Quote_Timestamp
  • Quote_weblink (if any)
  • Quoted_by

etc.

Can you help me get started on the code?

I know sql and can learn requisite php (I know other languages like java, c++ etc). But I don\'t have any experience with CSS (apart from some basic syntax).

2 个回复
最合适的回答,由SO网友:rents 整理而成

我找到了一个插件,它使用了一个自定义数据库表,这正是我要找的。我将在许可证允许的情况下自定义其代码

SO网友:Pieter Goosen

从你的评论中,我真的不知道为什么你不应该使用自定义帖子类型和自定义字段。

那么,从上面可以看出,您有额外的灵活性。嗯,在尝试这样的事情时,额外的灵活性总是一个加号。这里的其他优点是,您不必使用额外的函数来创建这些功能,也不需要创建额外的db字段(我不建议您这样做,我真的不认为这里需要额外的db表)

我认为这里的问题是缺乏执行力。以下是一个基本想法:

你的第一步是register a custom post type. 这只是一个基本的自定义帖子类型,您可以决定将其从搜索中排除,并使用单独的单一视图。

这里最重要的部分是custom-fieldssupports 论点

这是一个修改后的法典示例

function codex_custom_init() {
    $args = array(
      \'supports\' => array( \'custom-fields\' ),
      \'label\'    => \'Quotes\'
    );
    register_post_type( \'quotes\', $args );
}
add_action( \'init\', \'codex_custom_init\' );
有关注册自定义帖子类型的更多示例和信息,请参见上面的链接

创建新报价时,现在可以创建和设置custom fields 相应地。根据问题中的字段命名自定义字段。这些值将是您输入的需要显示的信息。另外,请仔细查看提供的链接,以了解如何使用自定义字段。您可能还对this post

在显示时,需要使用自定义查询和瞬态。我们将利用WP_Query 对于将显示引号和Transient API 每日轮换报价。再次,阅读并使用所给链接中的示例。

这是一个概念查询(从codex修改而来,untested)

// Check for transient. If none, then execute WP_Query
if ( false === ( $quotes = get_transient( \'daily_quotes\' ) ) ) {

      $quotes = new WP_Query(
   array(
\'post_type\' => \'quotes\',
\'posts_per_page\' => 1,
\'orderby\' = \'rand\'
   ));

// Put the results in a transient. Expire after 24 hours.
set_transient( \'daily_quotes\', $quotes, 24 * HOUR_IN_SECONDS );
} 

// Run the loop as normal
if ( $quotes->have_posts() ) {

   while ( $quotes->have_posts() ) { 
   $quotes->the_post(); 
       $data = get_post_meta( $post->ID );

       echo \'Quote Text: \'. $data[\'Quote_Text\'][0] . \'</br>\';
       echo \'Quote Timestamp: \' . $data[\'Quote_Timestamp\'][0] . \'</br>\';
       // Continue with the rest

   }
   wp_reset_postdata();
}

结束

相关推荐

GET_POSTS查询匹配的结果太多

我在一个函数中有一个查询,它返回我不想要的匹配项,例如,当$id=116时,它还返回meta\\u键“funds\\u id”为11687的结果。 public function list_related_docs($id){ $docs_args = array( \'post_type\' => \'publication\', \'post_status\' => \'publish\',