【问题标题】:Wordpress, editing linksWordpress,编辑链接
【发布时间】:2023-04-01 09:45:01
【问题描述】:

我正在尝试更改 oNe 的目的地阅读更多 wordpress 中的链接:

我在frontpage.php中找到了这段代码:

<?php
     foreach ($query as $post) {
      setup_postdata($post);

      printf('<div>');
      printf('<div class="box">');
      printf('<h4>%s</h4>', $post->post_title);

      printf('<img src="%s" />', wp_get_attachment_image_src(get_post_thumbnail_id(get_the_id()), 'full')[0]);

      printf('<p>%s</p>', get_the_excerpt($post->ID));
      printf('<a href="%s" class="button">Read more</a>', post_permalink($post->ID));
      printf('</div>');
      printf('</div>');
     }

     wp_reset_postdata();
    ?>

我想我可以摆弄和编辑链接,以便它们通过这个 PHP 转到我的设计页面,但是我想知道如何通过 Wordpress 管理界面来完成。

因为据说 wordpress 应该让您轻松完成这项工作,但我似乎在这些阅读更多链接上找不到任何内容,除了我在 PHP 中找到的代码。

你知道改变链接目的地的“Wordpress方式”吗?

【问题讨论】:

  • 这个问题可能已经在wordpress.stackexchange.com得到回答
  • 关于 wordpress 的所有内容“阅读更多”:codex.wordpress.org/…... 等等 :)
  • 谢谢,但没有答案,我已经看过了。我尽量不要弄乱代码,除非真的没有“wordpress”方式应该基本上自动完成。

标签: php html wordpress


【解决方案1】:

阅读您对链接的评论后,回复很简单:“WordPress”方式是代码,提供的URL 包含您需要了解的所有信息。至少以本机方式,没有管理员方法可以做到这一点。

但是,在提供的代码中,有一行显示 Read More,即:

  printf('<a href="%s" class="button">Read more</a>', post_permalink($post->ID));

基本上这条线的作用是指向相应的帖子:它调用 post_permalink 函数,然后 $post->ID 告诉该函数要打开哪个帖子。

理论上,您可以通过将该行更改为简单的 HTML 来更改链接:

  printf('<a href="%s" class="button">Read more</a>', 'http://www.yoururl.com');

这应该可以解决您的问题。

正确的做法:

在帖子中添加自定义字段,插入网址并在循环中加载。

编辑:更好地解决 OP 问题

由于这是一个循环,在您的代码中由 foreach 表示,因此代码会执行一次,并且在每个循环中 $post->ID 都会自动更改。通过固定 URL 更改循环,您的 3 个帖子将链接到同一个位置。

有几种方法可以改变行为,最简单、最简洁更有效的方法是在帖子中添加自定义字段。这将在您的帖子管理区域中创建一个字段,您插入您的 URL 并在前端访问它。这样您的所有帖子都可以链接到您想要的位置。

例如:

  1. 看看this插件;
  2. 创建一个text field命名的URL;
  3. 在前端使用get_post_meta()访问;

你的代码行应该是这样的:

printf('<a href="%s" class="button">Read more</a>', get_post_meta( $post->ID, 'URL');

【讨论】:

  • 谢谢,我已经在理论上解决了这个问题,我只是没有实现它,因为我想确定。但是我还有一个额外的问题:在代码中提交 URL 是否会更改所有三个阅读更多按钮以定向到该页面?因为我有 3 个按钮,每个按钮都想指向我选择的页面,所以我该怎么做呢?我犹豫要更改这段代码的整个主体,因为我知道这是一个内置函数,所以我如何更改每个阅读更多按钮的目的地?
  • 或者如何更改 3 个页面中每个页面的 Post Id?
  • 很棒的答案,感谢您花时间解释一些基本的工作原理。
  • 是的,通过我最初提出的更改,您的 3 个按钮将链接到同一个位置,但是我已经编辑了原始帖子,以便您解决问题。
【解决方案2】:

“阅读更多”链接指向该特定帖子的网址;鉴于上下文,更改目的地没有多大意义。听起来您的问题不在于更改链接的目的地本身,而是您需要更改它实际链接到的页面的设计。如果是这种情况,您应该查看page templates(如果目标是一个页面)或custom post types(如果它是一种帖子)。

查看您的其他一些问题,我了解到您是 WordPress 新手。以下是您的示例如何工作的简短摘要,以便您可以更好地理解:

  • WordPress 主要使用帖子:这些是您网站的特定条目。根据网站的性质,它们可以是博客文章、评论、新闻文章等等。请记住,每个帖子都是它自己在 WordPress 中的特定事物
  • 帖子的外观由所使用的模板决定。
  • 您发布的那段代码是一个循环;其中一个特别是获取变量 $query 的内容(在您的示例中包含三个帖子),然后 for each 帖子运行 {} 括号之间的所有函数。这就是为什么你最终得到三个帖子/图片/链接的原因;该函数运行三次,每次在$query 中找到的帖子运行一次
  • {} 括号内,$post 指的是那个特定的帖子。 $post-&gt;ID 返回该帖子的唯一 ID 号。
  • get_the_excerpt() 函数获取该特定帖子的摘录(一小段内容)。您将其传递给 $post-&gt;ID,以便它获取正确帖子的摘录。
  • post_permalink() 函数用于确定特定帖子的 URL。同样,在您的示例中,您将其传递给$post-&gt;ID

您应该阅读The Loop;它构成了 WordPress 工作方式的基础。如果你能明白这一点,你就成功了一半。

【讨论】:

  • 现在没有三个阅读更多链接,只有一个代码: '); printf('
    '); printf('

    %s

    ', $post->post_title); printf('', wp_get_attachment_image_src(get_post_thumbnail_id(get_the_id()), 'full')[0]); printf('

    %s

    ', get_the_excerpt($post->ID)); printf('阅读全文', post_permalink($post->ID)); printf('
    '); printf('
    '); } wp_reset_postdata(); ?>
  • 我不确定我是否理解您的评论:查看您的屏幕截图,我可以看到有三个帖子(详细服务、特价和服务区)。每个帖子都有一个阅读更多链接,该链接将指向该特定帖子的完整页面。这些链接由post_permalink() 函数生成。您拥有其中的三个,因为它在 foreach() 循环中使用,该循环运行了 3 次。
  • 我了解到您对 WordPress 很陌生,所以我扩展了上面的答案,尝试为您提供更多背景信息。
  • 谢谢你,我一定会在 Loop 上做一些阅读,除了解决这个问题之外,我真的在努力理解这一点。
  • 猜你喜欢
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2011-06-17
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多