在Wordpress中自动生成自定义字段值

时间:2009-12-11 06:33:14

标签: php wordpress wordpress-plugin

我运行了一些副博客,我将这些博客汇总到我的主要博客中。 我使用simplepie来解析来自其他博客的提要,因此帖子是自动创建的。

我的典型帖子是这样的:

  1. IMAGE
  2. CONTENT / TEXT
  3. HYPERLINK
  4. 我要做的是自动抓取超链接,并将其插入自定义字段。自定义字段已存在于帖子中,但我需要将帖子内容中包含的超链接作为值插入。

    我只需要链接,没有html,所以价值只是一个直接链接 - http://domain.com/fsdds

    我知道有很多插件可以通过图像实现这一点,但我还没有看到任何其他内容,比如超链接。

    我在Wordpress论坛上发布了这个问题并被告知我必须解析整个帖子内容,寻找链接,我知道,问题是我不太清楚如何做到这一点。

    由于

4 个答案:

答案 0 :(得分:1)

这是抓住帖子中第一张图片的功能:

function catch_that_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];

      if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
      }
      return $first_img;
    }

您只需要将第一个preg_match_all参数替换为:

'/(HTTPS://)?。(WWW)([A-ZA-Z0-9_%] )\ B [AZ] {2,4}([AZ] { 2})((/ [A-ZA-Z0-9 _%] )+)?(。[AZ] *)/?“

将整个函数添加到functions.php中,并从脚本中调用该函数。 它应该返回它在帖子内容中找到的第一个链接。

答案 1 :(得分:1)


根据Anthony的回答,一旦你有了链接,就使用UPDATE POST META

将它放在你的functions.php文件中:

function catch_that_link() {
      global $post, $posts;
      $first_link = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/(https?://)?(www.)?([a-zA-Z0-9_%]*)\b.[a-z]{2,4}(.[a-z]{2})?((/[a-zA-Z0-9_%])+)?(.[a-z])?/', $post->post_content, $matches);
      $first_link = $matches [1] [0];

      if(empty($first_link)){ //Defines a default image
        return 'no link found';
      }
      return $first_link;
    }

然后在您的查询循环,类别文件或任何php文件中,您将执行以下操作

<?php 

$post_id = 13; //replace the number with the specific post
$meta_key = 'key_example' //replace with your custom field name
$meta_value = catch_that_link();

update_post_meta($post_id, $meta_key, $meta_value); 
?> 

答案 2 :(得分:0)

我自己一直在考虑这个问题,解决办法就是在save_post动作钩子上运行一个函数。不幸的是,这在Wordpress Codex中没有记载,我还没有时间去寻找更远的地方。

答案 3 :(得分:0)

偶然发现了Function Reference/add post meta

仍需要一种从帖子中获取超链接的方法,并将其作为$ metavalue插入。