将帖子固定链接从自定义字段更改为外部URL

时间:2012-09-05 作者:Feras Odeh

我想让我的用户提交到我的网站的链接,比如reddit和digg。我添加了一个meta\\u键“syndication\\u permalink”,其中包含指向此帖子的链接。如何更改post permalink以链接此自定义链接而不是我的页面?

1 个回复
SO网友:fuxia

滤器post_link (或post_type_link 对于自定义贴子类型),获取并验证贴子元值,然后返回该值,而不是原始链接。

作为插件:

<?php
/**
 * Plugin Name: External Permalinks
 * Plugin URI:  http://wordpress.stackexchange.com/q/64285/73
 * Description: Uses the value of post meta field <code>syndication_permalink</code> as permalink if available.
 * Version:     2012.11.13
 * Author:      Fuxia Scholz
 * Author URI:  https://fuxia.me
 * Licence:     MIT
 * License URI: http://opensource.org/licenses/MIT
 */

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, \'syndication_permalink\', TRUE );
    $url  = esc_url( filter_var( $meta, FILTER_VALIDATE_URL ) );

    return $url ? $url : $link;
}
样本输入:

enter image description here

结束

相关推荐

多个单个站点,一个插件目录-调整plugins_url()

[这不是一个多站点问题]更新:这个问题在逻辑上是不可能的,或者是思维循环,如果你愿意的话,请检查下面的更新。技术是laid out here in WPEngineer.它允许有一个插件文件夹来为运行在同一服务器上的多个WordPress站点提供服务。所以,我所有的开发站点都在wp配置中有这个。phpdefine( \'WP_PLUGIN_DIR\', \'/www_dev/base-site/wp-content/plugins\' ); define( \'WP_PLUGIN_URL\', \