Post 外部 link、文件 link 或 Wordpress 中的 post url
Post either external link, file link, or post url in Wordpress
好的。所以我有我正在处理的这个 Wordpress 网站,客户需要让她 post link 到外部 link、文件 url 或 post 本身。我有两个自定义字段设置,一个叫做 "url",另一个叫做 "file_url"。我已经得到 "url" 一个可以工作,但我不确定我应该如何添加 "file_url" 自定义 post 类型的逻辑,以防该类型有数据。我一直试图让这个工作一段时间,但我认为我缺乏知识真的伤害了我。太菜了。
function.php 引入这个文件:
<?php
/**
*
* Permalink
*
* @package Theme
*/
add_filter( 'post_link', 'wpse_64285_external_permalink', 10, 2 );
/**
* Parse post link and replace it with meta value.
*
* @wp-hook post_link
* @param string $link
* @param object $post
* @return string
*/
function wpse_64285_external_permalink( $link, $post )
{
$meta = get_post_meta( $post->ID, 'url', TRUE);
$fileMeta = get_post_meta( $post->ID, 'file_url', TRUE);
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ));
return $url ? $url : $link;
}
此处的代码经过一些编辑:https://wordpress.stackexchange.com/a/72384/77860
编辑
得到了一位天才同事的支持。这是代码,以防有人需要它,这将根据后端中的内容提取正确的字段:
<?php
/**
*
* Permalink
*
* @package Theme
*/
add_filter( 'post_link', 'wpse_64285_external_permalink', 10, 2 );
/**
* Parse post link and replace it with meta value.
*
* @wp-hook post_link
* @param string $link
* @param object $post
* @return string
*/
function wpse_64285_external_permalink( $link, $post )
{
$url = $link;
if ($post->post_type == 'post'){
$meta = get_field( 'url', $post->ID);
$fileMeta = get_field( 'file_url', $post->ID);
if (isset($meta) && !empty($meta)){
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ));
}
if (isset($fileMeta) && !empty($fileMeta)){
$url = esc_url( filter_var( $fileMeta, FILTER_VALIDATE_URL ));
}
}
return $url;
}
Code Works Prefect,请检查您是否在自定义字段上获取数据。看来您使用的是 ACF,请检查字段名称是否正确。
外部 URL :
文件 URL :
我根据最佳实践编写了代码,下面是,
<?php
if (isset($meta) && !empty($meta)){
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ));
}else if (isset($fileMeta) && !empty($fileMeta)){
$url = esc_url( filter_var( $fileMeta, FILTER_VALIDATE_URL ));
}
?>
好的。所以我有我正在处理的这个 Wordpress 网站,客户需要让她 post link 到外部 link、文件 url 或 post 本身。我有两个自定义字段设置,一个叫做 "url",另一个叫做 "file_url"。我已经得到 "url" 一个可以工作,但我不确定我应该如何添加 "file_url" 自定义 post 类型的逻辑,以防该类型有数据。我一直试图让这个工作一段时间,但我认为我缺乏知识真的伤害了我。太菜了。
function.php 引入这个文件:
<?php
/**
*
* Permalink
*
* @package Theme
*/
add_filter( 'post_link', 'wpse_64285_external_permalink', 10, 2 );
/**
* Parse post link and replace it with meta value.
*
* @wp-hook post_link
* @param string $link
* @param object $post
* @return string
*/
function wpse_64285_external_permalink( $link, $post )
{
$meta = get_post_meta( $post->ID, 'url', TRUE);
$fileMeta = get_post_meta( $post->ID, 'file_url', TRUE);
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ));
return $url ? $url : $link;
}
此处的代码经过一些编辑:https://wordpress.stackexchange.com/a/72384/77860
编辑
得到了一位天才同事的支持。这是代码,以防有人需要它,这将根据后端中的内容提取正确的字段:
<?php
/**
*
* Permalink
*
* @package Theme
*/
add_filter( 'post_link', 'wpse_64285_external_permalink', 10, 2 );
/**
* Parse post link and replace it with meta value.
*
* @wp-hook post_link
* @param string $link
* @param object $post
* @return string
*/
function wpse_64285_external_permalink( $link, $post )
{
$url = $link;
if ($post->post_type == 'post'){
$meta = get_field( 'url', $post->ID);
$fileMeta = get_field( 'file_url', $post->ID);
if (isset($meta) && !empty($meta)){
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ));
}
if (isset($fileMeta) && !empty($fileMeta)){
$url = esc_url( filter_var( $fileMeta, FILTER_VALIDATE_URL ));
}
}
return $url;
}
Code Works Prefect,请检查您是否在自定义字段上获取数据。看来您使用的是 ACF,请检查字段名称是否正确。
外部 URL :
文件 URL :
我根据最佳实践编写了代码,下面是,
<?php
if (isset($meta) && !empty($meta)){
$url = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ));
}else if (isset($fileMeta) && !empty($fileMeta)){
$url = esc_url( filter_var( $fileMeta, FILTER_VALIDATE_URL ));
}
?>